日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

排序算法之直接插入排序

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法之直接插入排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、基本思想:

? ???? 已知待排序列r[1...n],先將序列中的第一個記錄看成是一個有序的子序列,然后從第二個記錄起逐個進行插入,直至整個序列變成關鍵字非遞減有序序列為止。 具體操作如下:

??? (1)查找出r[i]在有序序列r[1...i-1]中的插入位置k;

??? (2)將r[k...i-1]中所有元素全部后移一個位置;

??? (3)將r[i]復制到r[k],則原r[1...r-1]的有序序列變成了一個r[1...i]的有序序列。

2、直接插入排序算法:

void InsertSort(ElemType A[],int n){int i,j;for(i = 2;i <= n;i++){                   //依次將A[2]~A[n]插入到前面已排序序列if(A[i].key < A[i-1].key){           //若A[i]的關鍵碼小于其前驅,需將A[i]插入有序表A[0] = A[i];                     //復制為哨兵,A[0]不存放元素for(j=i-1;A[0].key<A[j].key;--j) //從后往前查找待插入位置A[j+1]=A[j];                 //向后挪位A[j+1]=A[0];                     //復制到插入位置}}
}

3、性能分析:

? ?? (1)空間復雜度:僅使用了常數個輔助單元,因而空間復雜度為O(1);

???? (2)時間復雜度:①最好情況下,表中元素已經有序,此時每插入一個元素,都只需比較一次而不用移動元素,因而時間復雜度為O(n);②最壞情況下,表中元素順序剛好與排序結果中元素順序相反時,總的比較次數達到最大,為,總的移動次數也達到最大,為;③平均情況下,考慮待排序表中元素是隨機的,此時可以取上述最好與最壞情況的平均值作為平均情況下的時間復雜度,總的比較次數與總的移動次數均約為n2/4。由此,直接插入排序算法的時間復雜度為O(n2)

????? (3)直接插入排序是一個穩定的排序方法。

????? (4)直接插入排序算法適用于順序存儲鏈式存儲的線性表。

4、參考文獻:

????? [1]《數據結構(C語言版)》,嚴蔚敏、吳偉民編著,清華大學出版社,ISBN:978-7-302-14751-0

????? [2]《2019年數據結構考研復習指導》,王道論壇.組編,中國工信出版集團、電子工業出版社,ISBN:978-7-121-33708-6
?

轉載于:https://www.cnblogs.com/yzdx/p/10747623.html

總結

以上是生活随笔為你收集整理的排序算法之直接插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。