三 代码:
/*归并排序*/
#include<iostream>
using namespace std;
void merge(int *array,int *result,int left,int mid,int right)
{
int i=left,j=mid+1,index=left;
while(i<=mid&&j<=right)
{
if(array[i]<array[j])
result[index++]=array[i++];
else
result[index++]=array[j++];
}
while(i<=mid)
result[index++]=array[i++];
while(j<=right)
result[index++]=array[j++];
for(int i=left;i<index;++i)//从临时数组复制回原数组。
array[i]=result[i];
}
void merge_sort(int *array,int *result,int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
merge_sort(array,result,left,mid);
merge_sort(array,result,mid+1,right);
merge(array,result,left,mid,right);
}
}
int main()
{
int array[32],result[32];
int data,i=0;
while(cin>>data)
array[i++]=data;
merge_sort(array,result,0,i-1);
int j=i;
for(i=0;i<j;++i)
cout<<result[i]<<endl;
}