問題描述:
[cpp]view plain
copy
/*
* 檔名稱:11.cpp
* 作 者:彭友程
* 完成日期:2023年12月16日
* 版 本 號:v1.0
*問題描述:採用歸併排序、快速排序等高效演算法進行排序,當資料元素較少時(如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("排序後(後300個):\n"
);
i=0;
while
(i<300)
printf("\n"
);
free(r);
return
0;
}
執行結果:
第16周專案3 歸併排序演算法的排序
問題及 檔名稱 專案3.cpp 作 者 孫子晴 完成日期 2016年12月18日 版 本 號 v1.0 問題描述 歸併排序演算法的改進 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度 的演算法。這樣做,會帶來一定的好處,例如歸併排序...
第16周專案3歸併排序演算法的改進
函式 include include include include define minlength 64 最短分段長度 typedef int keytype 定義關鍵字型別 typedef char infotype 10 typedef struct 記錄型別 rectype 排序的記錄型別...
第16周專案3 歸併排序演算法的改進
問題及 檔名稱 cpp1.cpp 完成日期 2015年12月14日 版本號 v1.0 問題描述 採用歸併排序 快速排序等高效演算法進行排序,當資料元素較少時 如n 64 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,例如歸併排序減少分配 臨時儲存區域的頻次,快速排序減少...