$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;
}
}
文章标题:数据结构——排序(php代码实现)
本文来源:
http://chengdu.cdxwcx.cn/article/popigi.html