十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
$arr[$j]){ //从小到大排列 $min=$j; } } if($min != $i){ $temp=$arr[$min]; $arr[$min]=$arr[$i]; $arr[$i]=$temp; } } } /** * 直接插入排序:就是在一个有序的数据集合中,通过与集合中的元素进行比较,然后插入数据。 * @param $arr */ public static function InsertSort($arr){ for($i=1;$i=0 && $inserted < $arr[$j]:将当前要插入的元素依次与其前面的元素进行比较,若要插入的元素比其前面的元素小,那么其前面的元素就要往后移动一位,以为要插入的元素腾出位置 for($j=$i-1;$j>=0 && $inserted<$arr[$j];$j--){ $arr[$j+1]=$arr[$j]; } $arr[$j+1]=$inserted; //表示要插入元素的位置下标为$j+1,因为for循环最后又执行了一次$j--,所以要把减去的 1 加上 } return $arr; } /** * 希尔排序:将一个待排序的数组,分成若干子序列,然后分别对其进行排序,使其先部分有序,如此循环,最后得到有序数组。 * 它是对直接插入排序的一种改进。 * @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; } }