資料結構(c語言版)排序1 插入排序

2021-10-13 03:10:31 字數 1788 閱讀 4591

排序的概念:將乙個無序的序列排列成乙個有序的序列

按儲存介質可乙個分為

1.內部排序:資料量不大,資料在記憶體,無需內外存交換資料。

2.外部排序:資料量較大,資料在外存,(檔案排序)

按比較器個數可分為

1.序列排序:單處理機(同時比較一對元素)

2.並行排序:多處理機(同時比較多對元素)

按主要操作可分為

1.比較排序:用比較的方法

例如:插入排序,交換排序,選擇排序,歸併排序

2.基數排序:不比較元素的大小,根據元素本身的取值確定其有序的位置

儲存結構—記錄序列以資料表儲存

#define maxsize 20                   //設記錄不超過20個

typedef int keytype; //設定關鍵字為int 整型

typedef structredtype.;

typedef structsqlist.;

基本思想:即邊插入邊排序,保證子串行隨時都是排好序的

直接插入法–使用 『哨兵』

記錄指標後移,尋找可以插入的位置

插入到正確的位置

然後,重複上述操作

**演算法

void

insertsort

(sqlist &l)

l.r[j+1]

=l.r[o]

;//插入到正確位置}}

}

折半插入排序

折半查詢示意圖,並且也是建立在有序的基礎之上。

void

binsertsort

(sqlist &l)

//迴圈結束,high+1 為插入位置

for(j=i-

1;j>=high+1;

--j)

l.r[j+1]

=l.r[j]

;//移動元素,

l.r[high+1]

=l.r[0]

;//插入到正確的位置

}}

希爾排序

基本思想

先將待排序列分割為若干個子串行,分別進行直接插入排序,待整個記錄中的序列「基本有序時」,然後在對整體進行直接插入排序。

特點1,縮小增量

2,多遍插入排序

希爾排序的思路**

希爾排序演算法(其中某一趟的排序操作)

void

shellinsert

(sqllist &l ,

int dk)

}}

總結

資料結構 C語言版 折半插入排序

折半插入排序是對直接插入排序的優化,折半插入排序所需附加儲存空間和直接插入排序相同,從時間上比較,折半插入排序僅減少了關鍵字間的比較次數,而記錄的移動次數不變。因此,折半插入排序的時間複雜度仍為o n2 直接插入排序可參考 此處以資料2的排序為例,用i從左到右遍歷到下標為5的位置,發現此處的值2小於...

插入排序(c語言版)

插入排序 insertion sort 的基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排序好的序列中,直到全部記錄插入完成為止.假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直到i n 為止,依次將r i 插入當前的有序區r...

資料結構與演算法(C語言版) 插入排序

低階排序演算法 氣泡排序,選擇排序,插入排序 高階排序演算法 歸併排序,堆排序,快速排序 插入排序就是在已經排序的資料中從大往小比較,出現比該數小的就插入到該位置後面。include using namespace std void insertionsort int a,int n int mai...