乙個陣列有n個元素,假如前面n-1個元素已經排序好了,那麼把第n個元素插入到前面n-1個元素,使得陣列有序排列,就是插入排序了。
至於n-1個元素如何已經先排序好,那麼我們可以假設前面n-2個元素已經排序好,把第n-1個元素插入到前面n-2個元素。
依次類推,直到只剩下乙個元素,也就是第乙個元素。排序完成。
**如下:
#includeusing 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(n²)
3平均情況下,o(n²)
元素資料在越接近有序的情況下,直接插入的效率越高。
直接插入排序(遞迴與非遞迴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...