您好,登錄后才能下訂單哦!
<?php namespace iphp\algorithm; /** * Created by PhpStorm. * User: 123 * Date: 14-9-3 * Time: 下午3:53 */ class Sort { /** * 冒泡排序 * 算法,相鄰2個(gè)元素比較,如果前大于后者,交換位置 * 第一次比較,將最大的元素排在了最后。 * 需要n-1次冒泡 * @param $arr * @return mixed */ public static function bubble($arr) { $num=count($arr); if($num<=1) return $arr; //些標(biāo)識用于判斷如果有一次沒有經(jīng)過交換。那么不需要再進(jìn)行下一次循環(huán) $flag=false; for($i=0;$i<$num-1;$i++) { for($j=0;$j<$num-1-$i;$j++) { //交換元素 if($arr[$j]>$arr[$j+1]) { $tmp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$tmp; $flag=true; } } if($flag==false) break; } return $arr; } /** * 選擇排序 * 第一次,取每1-n個(gè)元素之間的最小值,與第0個(gè)元素比較,并將最小的放在前面。 * @param $arr * @return mixed */ public static function select($arr) { $num=count($arr); if($num<=1) return $arr; for($i=0;$i<$num-1;$i++) { $minValue=$arr[$i]; $minIndex=$i; for($j=$i+1;$j<$num;$j++) { if($minValue>$arr[$j]) { $minValue=$arr[$j]; $minIndex=$j; } } //交換位置 if($i!=$j) { $tmp=$arr[$i]; $arr[$i]=$minValue; $arr[$minIndex]=$tmp; } } return $arr; } /** * 插入排序 * 最開始將數(shù)組的第一個(gè)元素當(dāng)作已經(jīng)排序的數(shù)組。將后面的元素與已排好序的比較,將其插入到已排序中的適當(dāng)位置。 * @param $arr * @return mixed */ public static function insert($arr) { $num=count($arr); if($num<=1) return $arr; for($i=1;$i<$num;$i++) { $insertValue=$arr[$i]; $insertIndex=$i-1; while($insertIndex>=0 && $insertValue<$arr[$insertIndex]) { $arr[$insertIndex+1]=$arr[$insertIndex]; $insertIndex--; } $arr[$insertIndex+1]=$insertValue; } return $arr; } /** * 快速排序 * @param $arr * @return array */ public static function quick($arr) { $num=count($arr); if($num<=1) return $arr; $middle=$arr[0]; $leftArr=array(); $rightArr=array(); for($i=1;$i<$num;$i++) { if($arr[$i]<=$middle) $leftArr[]=$arr[$i]; else $rightArr[]=$arr[$i]; } $leftArr=self::quick($leftArr); $rightArr=self::quick($rightArr); return array_merge($leftArr,array($middle),$rightArr); } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。