插入排序insertionsort,引數是乙個陣列包含了n個待排序的數,輸入的各個數字是原地排序的(sorted in place),意即這些數字就是在陣列a中進行重新排序的,在任何時刻,至多只有其中的常數個數字是儲存在陣列之外的,當過程insertionsort執行完畢後,輸入陣列a中就包含了已排好序的陣列輸出序列。
下面是利用c++語言實現的插入排序**:
#include #define n 10
using namespace std;
//宣告插入排序函式
int* insertionsort(int *array,int length);
int main()
; insertionsort(array,n);
for(int i=0;i=0 && array[j]>key)//注意j的取值》=0
//while
array[j+1] = key;
}//for
return array;
}
插入排序的演算法複雜性分析:對於插入排序,它的複雜性依賴於待排序陣列的一些屬性,待排序陣列長度、已排好序程度等。我們一般考察最壞情況下即逆序排序和最佳情況下即已排好序的複雜性。
最佳情況下:此時待排序陣列已經是乙個排好序的陣列,推理可得程式執行時間可以表示為an+b;因此,它是n的乙個線性函式。
最壞情況下:此時待排序陣列是乙個逆序陣列,此時,我們必須把每個元素array[i]與整個已排序的子陣列array[1...i-1]中的每個元素進行比較,因而,最壞情況下程式的執行 時間為an^2+bn+c,這是乙個關於n的二次函式。
一般來說,如同插入排序一樣,乙個演算法的執行時間對某一給定的輸入來說,往往是固定的。
插入排序 折半插入排序
折半插入排序 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...