void mergeArray(int a[],int l, int mid, int r,int temp[]){
// if(a == NULL || l < 0 || r < 0 || mid < l|| mid > r || r < l || temp == NULL){
// // throw new exception("Invalid args") ;
// return;
// }
//int first=l,last = mid+1;
int i=l,j=mid+1;
int k=0;
while(i<=mid && j <= r){
if(a[i] > a[j]){
temp[k++] = a[j++];
}else{
temp[k++]=a[i++];
}
}
while(i<=mid){
temp[k++]=a[i++];
}
while(j<=r){
temp[k++]=a[j++];
}
for(i=0;i<k; i++){
a[l+i]=temp[i];
}
}
void mergeSort(int a[],int l,int r , int temp[]){
if(l<0 || r<l || a == NULL || temp == NULL)
return ;
if(l<r){
// if(a==NULL || temp == NULL)
// return;
int mid=l+((r-l)>>1);
//printf("hehe\n");
mergeSort(a,l,mid,temp);
mergeSort(a,mid+1,r,temp);
mergeArray(a,l,mid,r,temp);
}
//printf("mergeSort\n");
}
归并排序C++实现
最新推荐文章于 2024-03-03 20:21:04 发布