标签:归并排序
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。
例如有两个有序表:(7,10,13,15)和(4,8,19,20),归并后得到的有序表为:(4,7,8,10,13,15,19,20)。
代码:
#include <iostream> using namespace std; void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i <= m && j <= n) { temp[k++] = a[i] > a[j] ? a[j++] : a[i++]; } while (i <= m) temp[k++] = a[i++]; while (j <= n) temp[k++] = a[j++]; for (i = 0; i < k; i++) a[first + i] = temp[i]; } void mergeSort(int data[], int start, int end ,int temp[]){ if(start < end){ mergeSort(data,start ,(start+end)/2,temp); mergeSort(data,(start+end)/2+1 ,end,temp); mergearray(data,start,(start+end)/2,end,temp); } } int main(){ int input[9]={0,1,1,5,6,71,3,4,9}; int output[9]; mergeSort( input ,0,8,output); // mergeSort(input,0,8); for(int i=0;i<9 ;i++){ cout << output[i] <<" "; } // cout<< BinarySearch(input,0,8,8); return 0; }
标签:归并排序
原文地址:http://blog.csdn.net/buyingfei8888/article/details/38336411