读了别人的程序,自己重写了一遍,完整代码如下:
#include<iostream>
using namespace std;
#define MAXSIZE 10
void print(int a[],int size = MAXSIZE)
{
int i;
for(i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void merge_array(int a[],int first,int mid,int last,int temp[])
{
if(first>mid||mid>last) return;
int i,j,k;
i=first;
j=mid+1;
k=0;
while(i<=mid&&j<=last)
{
if(a[i]<=a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=mid) temp[k++]=a[i++];
while(j<=last) temp[k++]=a[j++];
i=first;
k=0;
while(i<=last) a[i++]=temp[k++];
}
void merge_divide(int a[],int first,int last,int temp[])
{
int mid;
if(first<last)
{
mid = (first+last)/2;
merge_divide(a,first,mid,temp);
merge_divide(a,mid+1,last,temp);
merge_array(a,first,mid,last,temp);
}
}
void merge_sort(int a[],int size,int temp[])
{
if(size<=1) return;
merge_divide(a,0,size-1,temp);
}
int main()
{
int a[MAXSIZE]={1,4,5,8,12,14,3,18,13,10};
int temp[MAXSIZE];
merge_sort(a,MAXSIZE,temp);
print(a);
system("pause");
return 1;
}
参考地址:http://blog.youkuaiyun.com/morewindows/article/details/6678165#comments
本文详细介绍了使用C++语言实现快速排序和归并排序的完整代码,通过重写别人的程序来深入理解算法实现细节,并提供了实际运行结果验证。通过比较两种排序算法在不同数据集上的性能表现,旨在提升对算法效率的理解。
474

被折叠的 条评论
为什么被折叠?



