插入排序工作原理:
1.將乙個陣列拆分成兩個陣列,乙個取第乙個元素認為是有序的;剩餘的元素認為是無序的
2.每次從無序陣列中取出第乙個元素與有序陣列最後乙個元素進行比較
待插入元素比較大,則放有序陣列後面;如果比較小,則與有序陣列倒數第二個進行比較,對有序陣列從後往前進行掃瞄,直到遇到比他小的位置,插到它的後面
3.依次執行上面的操作,直到序列全部有序
資料演示:
待排序序列:10 7 15 2 5 27 13
第0輪: 7 15 2 5 27 13 //迴圈i=1 當前比較元素下標i
第1輪:【7 10】 15 2 5 27 13
第2輪:【7 10 15】 2 5 27 13
第3輪:【2 7 10 15】 5 27 13
第4輪:【2 5 7 10 15】 27 13
第5輪:【2 5 7 10 15 27】 13
第6輪:【2 5 7 10 13 15 27】
**實現:
function insertionsort($arr)
for($i=1;$i<$len;$i++)
$arr[$curindex] = $current;
} return $arr;
}print_r(insertionsort($arr));
排序演算法 插入排序
插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排...
排序演算法 插入排序
排序演算法之插入排序 參照新版程式 下面是錯誤的理解,正確的參考,後文已經修改過的部分。選擇排序,顧名思義,就是選擇乙個元素進行排序。原理 將原始序列分成兩部分,一部分已經有序,一部分無序。將無序中的元素逐個插入到有序序列中。這個也是兩層迴圈,就我個人理解,與氣泡排序是乙個原理。氣泡排序是每次都從無...
排序演算法 插入排序
插入排序簡單來說 就是將乙個資料插入到已經到排好的序列中,但要求插入後仍然有序。這種方法一般適用少量資料的。一 主要的插入排序 直接插入排序 二分插入排序 鍊錶插入排序,希爾排序,是屬於穩定排序的一種。二 直接插入排序 把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無...