插入排序(以升序爲例)
核心思想:將數組看成兩個數組,左邊的是有序數組,右邊的是無序數組。將右邊的元素,一個個插入到有序數組中。
首先要找一個基準,所以就拿第一個元素 $arr[0]來作爲有序數組的第一個元素
function insertSort($arr) {
//獲取數組單元個數
$count = count($arr);
//外層循環用於從未排序區域中取出待排序元素
for ($i=1; $i < $count; $i++) {
//獲取當前即將要插入的元素值
$temp = $arr[$i];
//內層循環用於從已排序區域尋找待排序元素的插入位置
for ($j=$i-1; $j >= 0; $j--) {
//如果$arr[$i]比已排序區域的$arr[$j]小,就後移$arr[$j]
if ($temp < $arr[$j]) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
} else {
//如果$arr[$i]不小於$arr[$j],則對已排序區無需再排序
break;
}
}
}
return $arr;
}
$arr = array(6,2,4,3,5,7,9,1,10);
print_r(insertSort($arr));