直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的記錄按其關鍵碼值的大小逐個插入到乙個已經排好序的有序序列中,直到所有的記錄插入完為止,得到乙個新的有序序列 。
可以模擬平日打撲克的情況:
當插入第i(i>=1)
個元素時,前面的array[0]、array[1]…、array[i-1]
已經排好序,此時用array[i]
的排序碼與array[i-1]、array[i-2]、…
的排序碼順序進行比較,找到插入位置即將array[i]
插入,原來位置上的元素順序後移即可。
// 直接插入排序(遞增)
void
insertsort
(int array,
int size)
array[j +1]
= array[j]
;// 將大於array[i]的元素向後移動,注意從後向前賦值
} array[j +1]
= k;
// 在前半段有序處插入array[i]
}}
測試資料:int array = ;
時間複雜度空間複雜度
排序穩定性
排序演算法 插入排序 直接插入排序
package 插入排序 直接插入排序 從後向前找到合適位置後插入 穩定 基本思想 每步將乙個待排序的記錄,按其順序碼大小插入到前面已經排序的字序列的合適位置 從後向前找到合適位置後 直到全部插入排序完為止。public class 直接插入排序 system.out.println 排序之前 fo...
排序演算法 插入排序 直接插入排序
當插入第i i 1 個元素時,前面的v 0 v i 1 等i 1個 元素已經有序。這時,將第i個元素與前i 1個元素v i 1 v 0 依次比較,找到插入位置即將v i 插入,同時原來位置上的元素向後順移。在這裡,插入位置的查詢是順序查詢。直接插入排序是一種穩定的排序演算法,其實現如下 public...
插入排序 直接插入排序
直接插入排序演算法思想 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,而左子表成為新的有序表。演算法過程分析 將待排序的元素存放在陣列r n 1 中,在初始狀態下,r 0 為監視哨,r 1 為有序區,r 2 r ...