實驗九 排序演算法的實現

2021-09-11 17:38:08 字數 2925 閱讀 7558

1.實驗目的

熟悉排序的方法、過程及原則。掌握插入排序、快速排序、選擇排序、歸併排序的演算法思想及實現方法,掌握其時間複雜度的分析方法。

2.實驗內容

定義待排序序列的儲存結構。驗證插入排序、希爾排序、氣泡排序、快速排序、簡單選擇排序、堆排序、歸併排序中各排序方法中的

一、二個排序演算法。

插入類排序:直接插入排序、希爾排序

交換類排序:氣泡排序、快速排序

選擇類排序:簡單選擇排序、堆排序

歸併類排序:遞迴和非遞迴形式的歸併排序

#include#define maxsize 20

typedef int keytype;//定義關鍵字型別為整數型別

typedef int infotype;

typedef struct redtype;//記錄型別

typedef struct sqlist;//順序表型別

typedef struct sqlist; //順序表型別

void shellinsert(sqlist *l, int dk)

}void sellsort(sqlist *l, int dlta, int t)

void show(sqlist l)

int main() ;

printf("輸入線性表的長度:");

scanf_s("%d", &l.length);

printf("輸入線性表中的元素:");

for (i = 1; i <= l.length; i++)

scanf_s("%d", &l.r[i].key);

sellsort(&l, dlta, 3);

printf("希爾排序結果是;");

typedef struct sqlist; //順序表型別

int partition(sqlist *l, int low, int high)

l->r[low] = l->r[high];//將比樞軸記錄小的記錄移動到底端

while (low < high&&l->r[low].key <= pivokey)

l->r[high] = l->r[low];//將比樞軸大的記錄移動到後端

} l->r[low] = l->r[0];//樞軸記錄到位

typedef struct sqlist; //順序表型別

typedef struct sqlist; //順序表型別

typedef sqlist heaptype;//堆排序用順序表儲存表示

void heapadjust(heaptype *h, int s, int m)

h->r[s] = rc;//插入

九 排序(未完)

氣泡排序 o n 2 簡單選擇排序 o n 2 直接插入排序 o n 2 希爾排序 o n 1.3 堆排序 o nlogn 歸併排序 o nlogn 快速排序 o nlogn 影響排序演算法效能的因素 內排序 排序整個過程中,待排序列所有記錄全部放置在記憶體中 外排序 排序記錄多,不能同時放入記憶體...

九 排序 上 排序

插入排序法 希爾排序 選擇排序 堆排序歸併排序 給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 輸入格式 輸入第一行給出正整數n 100000 隨後一行給出n個 長整型範圍內的 整數,其間以空格分隔。輸出格式...

實驗八 排序演算法的實現 資料結構

1.掌握常用的排序方法,並掌握用高階語言實現排序演算法的方法 2.深刻理解排序的定義和各種排序方法的特點,並能加以靈活應用 3.了解各種方法的排序過程及其時間複雜度的分析方法。實驗在計算機機房,應用軟體vc 統計成績 給出n個學生的考試成績表,每條資訊由姓名和分數組成,試設計乙個演算法 1 按分數高...