直接插入排序(遞迴與非遞迴2種實現方法)

2021-12-29 19:39:29 字數 545 閱讀 3902

乙個陣列有n個元素,假如前面n-1個元素已經排序好了,那麼把第n個元素插入到前面n-1個元素,使得陣列有序排列,就是插入排序了。

至於n-1個元素如何已經先排序好,那麼我們可以假設前面n-2個元素已經排序好,把第n-1個元素插入到前面n-2個元素。

依次類推,直到只剩下乙個元素,也就是第乙個元素。排序完成。

**如下:

#include

using namespace std;

void insert_sort(int *a,int n)

else //遞迴的出口是n=0

return ;

}void main()

; insert_sort(a,3);

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

{ cout<

時間複雜度分析:

1.最好情況下,原始資料已經排序好,那麼時間複雜度為o(n)

2.最壞的情況下,原始陣列反向排序,此時為o(n2)

3平均情況下,o(n2)

元素資料在越接近有序的情況下,直接插入的效率越高。

直接插入排序(遞迴與非遞迴2種實現方法)

乙個陣列有n個元素,假如前面n 1個元素已經排序好了,那麼把第n個元素插入到前面n 1個元素,使得陣列有序排列,就是插入排序了。至於n 1個元素如何已經先排序好,那麼我們可以假設前面n 2個元素已經排序好,把第n 1個元素插入到前面n 2個元素。依次類推,直到只剩下乙個元素,也就是第乙個元素。排序完...

直接插入排序2

在日常生活中,經常碰到這樣一類排序問題 把新的資料插入到已經排好的資料列中。例如 一組從小到大排好順序的資料列,通常稱之為有序列,我們用序號1,2,3,表示資料的位置,欲把乙個新的資料8插入到上述序列中。完成這個工作的步驟 確定資料 8 在原有序列中應該占有的位置序號。資料 8 所處的位置應滿足小於...

排序 2 直接插入排序

1.直接插入排序思想 構建有序序列,對於未排序的資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序的實現上,從後向前掃瞄,需要反覆把已排序元素逐步向後移動,為最新元素提供插入空間 2.插入排序 預設乙個元素是有序的 三個 元素拿出來 符合條件後移 插入 void insertsort i...