第十六周 歸併演算法的改進

2021-07-25 09:46:03 字數 1427 閱讀 3673

/*       

*作 者:孫子策

*完成日期:2016.12.15

*問題描述:採用歸併排序、快速排序等高效演算法進行排序,當資料元素較少時(如n≤64),經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配、**臨時儲存區域的頻次,快速排序減少遞迴層次等。

試按上面的思路,重新實現歸併排序演算法。

*/

#include #include #include #include #define minlength 64        //最短分段長度  

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

typedef char infotype[10];

typedef struct //記錄型別

rectype; //排序的記錄型別定義

void getdata(rectype *&r, int n)

r[j+1]=tmp; //在j+1處插入r[i]

} }

//合併兩個有序表

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];

}

//一趟合併

void mergepass(rectype r,int length,int n) //對整個數序進行一趟歸併

//自底向上的二路歸併演算法,但太短的分段,用直接插入完成

void mergesort(rectype r,int n)

} int main()

printf("\n");

printf("排序後(後300個):\n");

第十六周 歸併排序演算法的改進

all right reserved.date 2015年12月14日 版本 v1.0.1 作業系統 xp 執行環境 vc6.0 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排...

第十六周 歸併排序演算法的改進

檔名稱 歸併排序演算法的改進.cpp 作 者 郝環宇 完成日期 2016.12.15 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配 臨時儲存區域的頻次,快速排序減少...

第十六周專案3 歸併排序演算法改進

問題及 煙台大學計算機與控制工程學院 作 者 劉倩 完成日期 2016年12月9日 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配 臨時儲存區域的頻次,快速排序減少遞...