这是 合并排序的递归算法 代码运行时不报错 但好像是有死循环 求大手斧正 万分感谢呀,该如何解决
这是 合并排序的递归算法 代码运行时不报错 但好像是有死循环 求大手斧正 万分感谢呀
#include<stdio.h>
void main(){
void Merge(int B[],int C[],int A[],int m,int n);
void MergeSort(int A[],int n);
int A[10],i,j;
printf("Insert 10 Number");
for(i=0;i<10;i++)
scanf("%d",A[i]);
MergeSort(A,10);
printf("Odder Array:");
for(j=0;j<10;j++)
printf("%d ",A[j]);
printf("\n");
}
void Merge(int B[],int C[],int A[],int m,int n){
int i=0,j=0,k=0;
while(i<m&&j<n){
if(B[i]<C[j])
A[k++]=B[i++];
else
A[k++]=C[j++];
if(i==m)
for(;j<n;j++)
A[k++]=C[j];
else
for(;i<m;i++)
A[k++]=B[i];
}
}
void MergeSort(int A[],int n){
int B[6],C[6],mid,i,j;
if(n>1){
mid=n/2;
for(i=0;i<mid;i++)
B[i]=A[i];
for(i=0,j=mid;j<n;i++,j++)
C[i]=A[j];
MergeSort(B,mid);
MergeSort(C,n-mid);
Merge(B,C,A,mid,n-mid);
}
}
------解决方案--------------------
void main(){
void Merge(int B[],int C[],int A[],int m,int n);
void MergeSort(int A[],int n);
int A[10],i,j;
printf("Insert 10 Number");
for(i=0;i<10;i++)
scanf("%d",&A[i]); //这句写错了
------解决方案--------------------
#include<stdio.h>
void main(){
void Merge(int B[],int C[],int A[],int m,int n);
void MergeSort(int A[],int n);
int A[10],i,j;
printf("Insert 10 Number");
for(i=0;i<10;i++)
scanf("%d",A[i]);
MergeSort(A,10);
printf("Odder Array:");
for(j=0;j<10;j++)
printf("%d ",A[j]);
printf("\n");
}
void Merge(int B[],int C[],int A[],int m,int n){
int i=0,j=0,k=0;
while(i<m&&j<n){
if(B[i]<C[j])
A[k++]=B[i++];
else
A[k++]=C[j++];
if(i==m)
for(;j<n;j++)
A[k++]=C[j];
else
for(;i<m;i++)
A[k++]=B[i];
}
}
void MergeSort(int A[],int n){
int B[6],C[6],mid,i,j;
if(n>1){
mid=n/2;
for(i=0;i<mid;i++)
B[i]=A[i];
for(i=0,j=mid;j<n;i++,j++)
C[i]=A[j];
MergeSort(B,mid);
MergeSort(C,n-mid);
Merge(B,C,A,mid,n-mid);
}
}
------解决方案--------------------
void main(){
void Merge(int B[],int C[],int A[],int m,int n);
void MergeSort(int A[],int n);
int A[10],i,j;
printf("Insert 10 Number");
for(i=0;i<10;i++)
scanf("%d",&A[i]); //这句写错了
------解决方案--------------------