歸併排序應該是穩定性排序中時間效率最高的演算法
歸併排序概述圖:
如圖,首先將一組序列遞迴拆分(分解)成多組,每組中只含乙個元素。
之後再歸併(merging函式即為歸併過程)。
#include
#include
#define maxsize 10 //排序序列長度
void merging(int *left,int leftsize,int right,int rightsize) //歸併函式
while (i < leftsize) temp[k++] = left[i++];
while (j < rightsize) temp[k++] = right[j++]; //根據歸併排序的特性,在上述while迴圈結束後,左組或者右組末尾還存在元素未存入temp,故需這兩步。並且不能用if,必須用while,想想為什麼。
for( m = 0; m < (leftsize+rightsize); m++)
//將temp中的元素複製給left,這樣下一次遞迴呼叫merging函式時,才能用到排好序的left,right。注意,這一步必不可少,否則導致排序失敗
}void mergesort(int k,int n) //歸併排序函式
}int main() //主函式
;mergesort(k,10);
for(i = 0;i < 10;i++)
printf(」\n");
return 0;
}
歸併排序遞迴實現
include include define length 10 using namespace std void merge int ar,int br,int start,int mid,int end else if i mid else void copy int ar,int br,int...
歸併排序(遞迴實現)
演算法思想 1 歸併排序是利用遞迴與分治技術,將資料序列劃分成為越來越小的半子表,再對半子表排序,最後再用遞迴步驟將排好序的半子表合併成為越來越大的有序序列。其中 歸 代表的是遞迴的意思,即遞迴地將陣列折半地分離為單個陣列。例如,陣列 5,2,1,7 會先折半,分為 5,2 和 1,7 兩個子陣列,...
歸併排序遞迴實現
對於歸併排序,不僅有遞迴的實現方式,還有迭代的實現方式。迭代法實現歸併排序的 如下 include include define max size 10 實現歸併,並將最後的資料放入到list1中 void merging int list1,int list1 size,int list2,int...