标签:
#include<stdlib.h> #include<stdio.h> void Merge(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex) { int i = startIndex,j=midIndex+1,k = startIndex; while(i!=midIndex+1 && j!=endIndex+1) { if(sourceArr[i]>sourceArr[j]) tempArr[k++] = sourceArr[i++]; else tempArr[k++] = sourceArr[j++]; } while(i!=midIndex+1) tempArr[k++] = sourceArr[i++]; while(j!=endIndex+1) tempArr[k++] = sourceArr[j++]; for(i=startIndex;i<=endIndex;i++) sourceArr[i] = tempArr[i]; } //内部使用递归 void MergeSort(int sourceArr[],int tempArr[],int startIndex,int endIndex) { int midIndex; if(startIndex<endIndex) { midIndex=(startIndex+endIndex)/2; MergeSort(sourceArr,tempArr,startIndex,midIndex); MergeSort(sourceArr,tempArr,midIndex+1,endIndex); Merge(sourceArr,tempArr,startIndex,midIndex,endIndex); } } int main(int argc,char * argv[]) { int a[8]={50,10,20,30,70,40,80,60}; int i,b[8]; MergeSort(a,b,0,7); for(i=0;i<8;i++) printf("%d ",a[i]); printf("\n"); return 0; }
标签:
原文地址:http://www.cnblogs.com/bendantuohai/p/4548520.html