📄 zoe.cpp
字号:
int Copy(int A[],int B[],int n )
{
for(int i=0; i<n;++i)
A[i]=B[i];
return n;
}
/*将数组B中元素复制到A中*/
void Merge(int A[],int B[],int m,int C[],int n )/*调用归并函数*/
{
int i,j,k;
k = 0;
for(i=0,j=0;;)
{
if(i==m)
{
//k+=Copy(&A[k],&C[j],n-j);
break;
}
if(j==n)
{
// k+=Copy(&A[k],&B[i],m-i);
break;
}
if(B[i]<C[j])
A[k++]=B[i++];
else
A[k++]=C[j++];
}
}
void MergeSort(int A[],int n)
{
int i,k,B[10000];
for(k=1;k<n;k*=2)
{
for(i=0;i<n;i+=2*k)
{
int n1,n2;
n1=k;
if(i+k>n)
n1=n-i;
if(n1<0)
n1=0;
n2 = k;
if(i+2*k>n)
n2=n-i-k;
if(n2<0)
n2 = 0;
Merge(B,&A[i],n1,&A[i+k],n2);
Copy(&A[i],B,n1+n2);
}
}
}
#include<stdio.h>
void main()
{
int a[]={72,73,71,23,94,16,5,68,64};
int n=9,i;
printf("原序列为:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");printf("\n");
MergeSort(a,n);
printf("排序后的序列为:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -