#include <cstdio>
#include <cstring>
#define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));}
void merge(int A[], int L1, int R1, int L2, int R2){
int index = 0,i=L1,j=L2;
int temp[100];
while(i<=R1&&j<=R2){
if(A[i]<=A[j]){
temp[index++] = A[i++];
}
else{
temp[index++] = A[j++];
}
}
while(j<=R2){
temp[index++] = A[j++];
}
while(i<=R1){
temp[index++] = A[i++];
}
for(i=0;i<index;i++){
A[L1+i] = temp[i];
}
}
void mergesort(int A[], int left, int right){
if(left<right){
int mid = (left+right)/2;
mergesort(A, left, mid);
mergesort(A, mid+1, right);
merge(A, left, mid, mid+1, right);
//int len=(sizeof(A)/sizeof(A[0]));
if(right-left>1){
for(int i=0;i<=6;i++){
printf("%d ",A[i]);
}
printf("\n");
}
}
}
int main(){
int A[7] = {66, 12, 33, 57, 64, 27, 18};
mergesort(A, 0, 6);
return 0;
}
```c
归并排序
最新推荐文章于 2024-08-12 19:32:44 发布