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 按分數高...