#include<iostream>
using namespace std;
void Merge(int a[],int l,int m,int r){
int x=m-l+1;
int y=r-m;
int *b=new int[x];
int *c=new int[y];
for(int i=0,j=l;i<x;i++,j++){
b[i]=a[j];
}
for(int i=0,j=m+1;i<y;i++,j++){
c[i]=a[j];
}
int i=0,j=0,k=l;
while(i<x&&j<y){
if(b[i]<=c[j]){
a[k++]=b[i++];
}else{
a[k++]=c[j++];
}
}
if(i>=x){
while(j<y){
a[k++]=c[j++];
}
}else{
while(i<x){
a[k++]=b[i++];
}
}
}
void Mergesort(int a[],int l,int r){
if(l<r){
int m=(l+r)/2;
Mergesort(a,l,m);
Mergesort(a,m+1,r);
Merge(a,l,m,r);
}
}
int main(){
int a[6]={14,12,15,13,11,16};
Mergesort(a,0,5);
for(int i=0;i<6;i++){
cout<<a[i]<<" ";
}
}
算法分析与设计(实验4二分分治排序)
最新推荐文章于 2022-06-15 20:35:24 发布