归并排序
归并排序是一种分而治之的思想,是建立在归并操作上的一种有效排序算法。将需要排序的数组分成两个或一个小数组先进行排序,再合并为大数组。这种方法可以用空间换取时间,来降低运行的时间复杂度。
下面我们来看看具体实现:
int function(int n,int m)
{
int mid,i,j,k;
if(n<m)//当n<m时,继续
{
mid=(n+m)/2;//取m与n和的中间值,不断分隔开来
i=n;
k=n;
j=mid+1;
function(n,mid);
function(mid+1,m);//将大数组分成两个元素或只剩一个元素
while(i<=mid&&j<=m)
{
if(a[i]<=a[j])
b[k++]=a[i++];
else
{
b[k++]=a[j++];
}
}
for(; i<=mid; i++)
b[k++]=a[i];
for(; j<=m; j++)
b[k++]=a[j];//若一个小块中仍没有完全遍历,则直接赋值
for(i=n; i<=m; i++)//将排序过的数组重新赋值排序(和)
a[i]=b[i];
}
}
总而言之,归并排序就是将数组分成几个小块(元素个数为一或二),先在小块中排序再一点一点变成大块的数组即可。
本文深入讲解了归并排序算法,一种基于分而治之策略的有效排序方法。文章详细阐述了如何将数组分解成小块进行排序,再逐步合并成有序的大数组。通过具体的代码实例,展示了归并排序的实现过程。
219

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



