/*
檔名稱:專案2.cbp
作 者:劉晨筱
完成日期:2023年12月14日
版 本 號:v1.0
問題描述:設計乙個函式,產生乙個至少5萬條記錄的資料集合。在同一資料集上,用直接插入排序、
氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序等演算法進行排序,
記錄所需要的時間,經過對比,得到對複雜度不同的各種演算法在執行時間方面的感性認識。
輸入描述:無
程式輸出:測試資料
*/
標頭檔案——sort.h**
#ifndef sort_h_included
#define sort_h_included
#define maxsize 50000 //最多的資料,取5萬,只測試快速演算法,可以往大調整
//下面的符號常量和結構體針對基數排序
#define radix 10 //基數的取值
#define digits 10 //關鍵字位數
typedef int keytype; //定義關鍵字型別
typedef char infotype[10];
typedef struct //記錄型別
rectype; //排序的記錄型別定義
typedef struct node
radixrectype;
void insertsort(rectype r,int n); //直接插入排序
void shellsort(rectype r,int n); //希爾排序演算法
void bubblesort(rectype r,int n); //氣泡排序
void quicksort(rectype r,int n); //快速排序
void selectsort(rectype r,int n); //直接選擇排序
void heapsort(rectype r,int n); //堆排序
void mergesort(rectype r,int n); //歸併排序
//下面函式支援基數排序
void createlink(radixrectype *&p,rectype r,int n); //建立基數排序用的鍊錶
void destorylink(radixrectype *&p); //釋放基數排序用的鍊錶
void radixsort(radixrectype *&p); //基數排序
#endif // sort_h_included
sotr.cpp檔案**:
#include "sort.h"
#include //1. 對r[0..n-1]按遞增有序進行直接插入排序
void insertsort(rectype r,int n)
}//7.歸併排序輔助1——合併有序表
void merge(rectype r,int low,int mid,int high)
else //將第2段中的記錄放入r1中
while (i<=mid) //將第1段餘下部分複製到r1
while (j<=high) //將第2段餘下部分複製到r1
for (k=0,i=low; i<=high; k++,i++) //將r1複製回r中
r[i]=r1[k];
}//7. 歸併排序輔助2——一趟歸併
void mergepass(rectype r,int length,int n) //對整個數序進行一趟歸併
else
}t->next=null;
}//8. 基數排序的輔助函式,釋放基數排序用的鍊錶
void destorylink(radixrectype *&p)
return;
}//8. 實現基數排序:*p為待排序序列鍊錶指標,基數r和關鍵字位數d已經作為符號常量定義好
void radixsort(radixrectype *&p)
else
p=p->next; //取下乙個待排序的元素
}p=null; //重新用p來收集所有結點
for (j=0; jnext=head[j];
t=tail[j];}}
t->next=null; //最後乙個結點的next域置null
//下面更新用於分離出第i位數字的d2
d2*=10;}}
main.cpp檔案**:
#include #include #include #include #include "sort.h"
知識點總結:
此專案需要整合多種排序演算法,旨在獲得對於複雜度不同演算法的感性認識,由於資料分布特點,計算機執行狀態等不同,其結果並不能完全替代對演算法複雜度的理論分析。
第十六周專案2 大資料集上排序演算法效能的體驗
問題及 設計乙個函式,產生乙個至少5萬條記錄的資料集合。在同一資料集上,用直接插入排序 氣泡排序 快速排序 直接選擇排序 堆排序 歸併排序 基數排序等演算法進行排序,記錄所需要的時間,經過對比,得到對複雜度不同的各種演算法在執行時間方面的感性認識。主函式main.cpp include includ...
第十六周專案(2) 大資料集上排序演算法效能的體驗
問題及 sort.h 煙台大學計算機與控制工程學院 作 者 楊甯 完成日期 2015年12月14日 問題描述 設計乙個函式,產生乙個至少5萬條記錄的資料集合。在同一資料集上,用直接插入排序 氣泡排序 快速排序 直接選擇排序 堆排序 歸併排序 基數排序等演算法進行排序,記錄所需要的時間,經過對比,得到...
第十六周專案2 大資料集上排序演算法效能的體驗
ifndef btree h included define btree h included 煙台大學計控學院 作 者 鄒曉琳 完成日期 2016年12月9日 問題描述 設計乙個函式,產生乙個至少5萬條記錄的資料集合。在同一資料集上,用直接插入排序 氣泡排序 快速排序 直接選擇排序 堆排序 歸併排...