插入排序演算法

2021-06-18 16:42:05 字數 1146 閱讀 3796

下面這段話摘自:

一般來說,插入排序都採用in-place在陣列上實現。具體演算法描述如下:

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

如果該元素(已排序)大於新元素,將該元素移到下一位置

重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

將新元素插入到該位置後

重複步驟2~5

範例程式碼為

c語言,輸入引數中,需要排序的陣列為array,起始索引值為first,終止索引值為last。範例源**的函式採用in-place排序,使用完成後,array中從first到last處於公升冪排序。

void insertion_sort(int array, int first, int last)

array[j+1] = temp; //被排序數放到正確的位置}}

以上摘自:

深信服的一道筆試題目:

有乙個陣列a[0]到 a[i-1]為從小到大排序,a[i]到a[count-1]沒有排序,請您使它們按照從小到大排序。

#include /* 陣列a[0]到 a[i-1]為從小到大排序,a[i]到a[count-1]沒有排序 */

int insert_sort(int a,int count)

a[j+1] = temp; //新元素插入操作,注意是a[j+1]不是a[j++]

} return 0;

}int main()

; insert_sort(a,10);

for(int i = 0;i < 10;i++)

printf("%3d",a[i]);

printf("\n");

return 0;

}

執行結果:

插入排序總結:

1、最差時間複雜度    o(n^2)

2、最優時間複雜度    o(n)

3、平均時間複雜度    o(n^2)

4、最差空間複雜度    需要輔助空間o(1)

插入排序演算法

插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...

演算法 插入排序

include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...

插入排序演算法

include include using namespace std 插入排序演算法 int main 定義陣列 int length sizeof num sizeof int 獲取陣列長度 cout 排序前的序列是 print num,length coutcout 排序前的序列是 print...