十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
$arr[$j]){ //從小到大排列
$min=$j;
}
}
if($min != $i){
$temp=$arr[$min];
$arr[$min]=$arr[$i];
$arr[$i]=$temp;
}
}
}
/**
* 直接插入排序:就是在一個(gè)有序的數(shù)據(jù)集合中,通過(guò)與集合中的元素進(jìn)行比較,然后插入數(shù)據(jù)。
* @param $arr
*/
public static function InsertSort($arr){
for($i=1;$i=0 && $inserted < $arr[$j]:將當(dāng)前要插入的元素依次與其前面的元素進(jìn)行比較,若要插入的元素比其前面的元素小,那么其前面的元素就要往后移動(dòng)一位,以為要插入的元素騰出位置
for($j=$i-1;$j>=0 && $inserted<$arr[$j];$j--){
$arr[$j+1]=$arr[$j];
}
$arr[$j+1]=$inserted; //表示要插入元素的位置下標(biāo)為$j+1,因?yàn)閒or循環(huán)最后又執(zhí)行了一次$j--,所以要把減去的 1 加上
}
return $arr;
}
/**
* 希爾排序:將一個(gè)待排序的數(shù)組,分成若干子序列,然后分別對(duì)其進(jìn)行排序,使其先部分有序,如此循環(huán),最后得到有序數(shù)組。
* 它是對(duì)直接插入排序的一種改進(jìn)。
* @param $arr
* @return mixed
*/
public static function ShellSort($arr){
$count=count($arr);
for($inc=floor($count/3);$inc>0;$inc=floor($inc/3)){
for($i=$inc;$i<$count;$i++){
$instered=$arr[$i];
for($j=$i-$inc;$j>=0 && $instered<$arr[$j];$j-=$inc){
$arr[$j+$inc]=$arr[$j];
}
$arr[$j+$inc]=$instered;
}
}
return $arr;
}
}