预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++归并排序算法实例C++归并排序算法实例归并排序算法是采用分治法的一个非常典型的应用。下面小编为大家整理了C++归并排序算法实例,希望能帮到大家!归并排序的思想是将一个数组中的数都分成单个的`;对于单独的一个数,它肯定是有序的,然后,我们将这些有序的单个数在合并起来,组成一个有序的数列。这就是归并排序的思想。它的时间复杂度为O(N*logN)。代码实现复制代码代码如下:#includeusingnamespacestd;//将有二个有序数列a[first...mid]和a[mid...last]合并。voidmergearray(inta[],intfirst,intmid,intlast,inttemp[]){inti=first,j=mid+1;intm=mid,n=last;intk=0;while(i<=m&&j<=n){if(a[i]<=a[j])temp[k++]=a[i++];elsetemp[k++]=a[j++];}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];}voidmergesort(inta[],intfirst,intlast,inttemp[]){if(first<last){intmid=(first+last)/2;mergesort(a,first,mid,temp);//左边有序mergesort(a,mid+1,last,temp);//右边有序mergearray(a,first,mid,last,temp);//再将二个有序数列合并}}boolMergeSort(inta[],intn){int*p=newint[n];if(p==NULL)returnfalse;mergesort(a,0,n-1,p);[]p;returntrue;}intmain(){intarr[]={2,1,4};MergeSort(arr,3);for(inti=0;i<3;++i){cout<<arr[i]<<"";}cout<<endl;}