排序 插入排序

2021-07-12 05:20:52 字數 893 閱讀 9254

一、定義:

插入排序分為兩種:直接插入排序折半插入排序

基本的思路:

每次將乙個待排序的資料,按照其大小插入到已排序好的序列中的適當位置,知道全部資料插入完成為止。

二、步驟:

假設待排序的資料都存在a[0...n-1]中,排序步驟:

1.設a[0]是長度為1的有序序列,而a[1...n-1]為長度n-1的無序序列,設乙個引數i=1;

2.將a[i]與a[0...i-1]序列中的資料進行一次比較,插入到其中的適當位置(據公升序降序而定),插入後形成a[0...i]的有序序列;

3.i = i+1,重複步驟2,直到i = n-1,排序完成。

三、c語言實現:

/// /// 插入排序

///

///

static void insertion_sort(int unsorted)

unsorted[j] = temp;}}

}

當然還可以進行簡化,借助換位函式封裝**:

void insertsort(int a, int n)  

四、總結:假如陣列已經使有序的,那麼每次插入乙個資料只需考慮該資料最終位置之前的資料,那麼插入的時間複雜度是o(n),但是一般都是對無序的資料進行排序,即最壞的情況時間複雜度為o(n^2)。

插入排序 折半插入排序

折半插入排序 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...

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...