/*
* 煙台大學計算機與控制工程學院
* 完成日期:2023年12月16日
* * 問題描述:
採用歸併排序、快速排序等高效演算法進行排序,當資料元素較少時(如n≤64),經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配、**臨時儲存區域的頻次,快速排序減少遞迴層次等。
試按上面的思路,重新實現歸併排序演算法。
* 輸入描述:
* 程式輸出: */
**:[cpp]view plain
copy
#include
#include
#include
#include
#define minlength 64 //最短分段長度
typedef
intkeytype;
//定義關鍵字型別
typedef
char
infotype[10];
typedef
struct
//記錄型別
rectype; //排序的記錄型別定義
void
getdata(rectype *&r,
intn)
//對r[low..high]按遞增有序進行直接插入排序
void
insertsort(rectype r,
intlow,
inthigh)
r[j+1]=tmp; //在j+1處插入r[i]
} }
//合併兩個有序表
void
merge(rectype r,
intlow,
intmid,
inthigh)
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,
intlength,
intn)
//對整個數序進行一趟歸併
//自底向上的二路歸併演算法,但太短的分段,用直接插入完成
void
mergesort(rectype r,
intn)
} intmain()
printf("\n"
);
printf("排序後(後30個):\n"
);
i=0;
while
(i<30)
printf("\n"
);
free(r);
return
0;
}
執行結果:
第十六周專案3 歸併排序演算法的排序
問題及 檔名稱 專案3.cpp 作 者 李曉鈺 完成日期 2016年12月17日 版 本 號 v1.0 問題描述 歸併排序演算法的改進 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度 的演算法。這樣做,會帶來一定的好處,例如歸併排序...
第十六周專案3 歸併排序演算法改進
問題及 煙台大學計算機與控制工程學院 作 者 劉倩 完成日期 2016年12月9日 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配 臨時儲存區域的頻次,快速排序減少遞...
第十六周 專案3 歸併排序演算法的改進
檔名稱 main.cpp,btree.h,btree.cpp 完成日期 2015年12月14日 版本號 code block 12.11 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如 n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,...