插入排序,一般以打牌排列手牌為例子。其實我感覺用兩個陣列表示更好理解,即使在整個**中只有乙個陣列,但
是可以抽象成兩個陣列。以要進行插入排序的陣列內容之前的內容為新陣列,原始陣列為舊陣列。old代表未排序的舊陣列;new代表排序後的新陣列。
new陣列中的內容是從old陣列中一點一點插入進來並且每插一次進行一次排序,因此new陣列永遠是有序的。我們預設
new陣列中已經插入了old陣列的第一項function sortinsert(arr)
//待移動完畢後,將v插入到新書組
arr[j+1] = v;
}}注:因為在new陣列是已經排好序的,arr[i]就是我們此時拿出要插入的內容,arr[i]與它相鄰(也就是new陣列的最後
乙個內容)的數只有大於或者不大於兩種關係,如果大於則將v插入j+1個位置即成為新陣列隊尾,如果小於,將滿足條
件的那一位向後移動一位。然後繼續比較,重複上述步驟,直到結束,最後將內容插入到已經移動好的新陣列中。
插入排序原理與實現
已知n個元素的陣列a 1 n 使用插入法將a中元素按非減排序。插入排序 往有序的序列裡,插入乙個新元素,但保證插入此資料後,該序列仍然有序。也可以這樣解釋 a n 的前i個元素有序,即a 0 至a i 1 有序 公升序或降序 插入a i 後,仍要保證a 0 至a i 有序 依次類推,直到i n 1。...
插入排序 折半插入排序
折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...
插入排序 折半插入排序
折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...