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

2021-07-25 15:20:10 字數 1863 閱讀 6326

問題及**:

[cpp]view plain

copy

/*         

*煙台大學計算機與控制工程學院          

*作    者:陳曉琳       

*完成日期:2023年12月26日      

*問題描述:採用歸併排序、快速排序等高效演算法進行排序,當資料元素較少時(如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;    

}    

執行結果

第十六周專案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 經常直接使用直接插入排序演算法等高複雜度的演算法。這樣做,會帶來一定的好處,...