資料結構 第十章 內部排序之插入排序

2021-07-12 02:44:53 字數 1097 閱讀 5078

ps:後面的元素的數值比前面的元素的小就插入

1.直接插入排序

#include

#define maxsize 20   //定義乙個順序表最大長度為20

#define lh(a,b) ((a)<(b))  //定義lh(a,b)就是afor(i=2;i<=l.length;i++)//從第二個元素開始和前面的元素比較}}

int main()

演算法優劣分析:

兩個for迴圈中,最壞情況下比較次數約為n,移動次數約為n,所以時間複雜度為o(n²)

2.折半插入排序

#include

#define maxsize 20

#define lh(a,b) ((a)<(b)) 

typedef int keytype;

typedef struct

redtype;

typedef struct

sqlist;

//以上定義同上

void binsertsort(sqlist &l)

for(j=i-1;j>=high+1;j--) //只能在前面插入

l.r[j+1]=l.r[j];   //迴圈後移

l.r[high+1]=l.r[0];}}

int main()

3.希爾排序

基本思想:現將整個待排記錄序列分割成若干個子串行分別進行直接插入排序,待整個序列「基本有序」時,再對全體記錄進行一次直接插入排序。

通過間隔分組的方法構建子串行,即是將相隔某個「增量」的元素構成乙個子串行。

#include

#define maxsize 20

#define lh(a,b) ((a)<(b))

typedef int keytype;

typedef struct

redtype;

typedef struct

sqlist;

//同上

void shellinsert(sqlist &l,int dk)}}

void shellsort(sqlist &l,int dlta)  //分子序列函式

}int main()

資料結構第十章 內部排序

一 內部排序 是乙個逐步擴大記錄有序序列長度的過程 其中,希爾排序不穩定 1.直接插入排序 o n n o 1 基於順序查詢的排序方法 將乙個記錄插入乙個已經排好序的有序表l中,從而得到乙個新的 記錄數增加1的有序表 特點是 從2開始乙個個判斷是否比前乙個元素要大,如果比前面的小的話就要以0單元為哨...

資料結構 第十章 排序作業

1 若表r在排序前已按鍵值遞增順序排列,則 演算法的比較次數最少。a 直接插入排序 b 快速排序 c 歸併排序 d 選擇排序 2 對各種內部排序方法來說,a 快速排序時間效能最佳 b 歸併排序是穩定的排序方法 c 快速排序是一種選擇排序 d 堆排序所用的輔助空間比較大 3.排序演算法的穩定性是指 a...

資料結構(嚴蔚敏)第十章 內部排序

直接插入 左邊有序,右邊無序,從右邊取數依次插入有序中 void insertsort int list,int len list j temp 折半插入 插入點採用折半查詢的方式 void insertsort2 int list,int len for int j i 1 j low j lis...