我是靠谱客的博主 疯狂鸡,最近开发中收集的这篇文章主要介绍震惊!让博主彻夜未眠的原因竟是这个(归并排序(c语言)),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

归并排序是很有意思的排序,将已有序的序列合并,从而得到完全一样的序列,即先使子序列有序再进行合并。
对于一个数组,左边left,右边right,我们取中点値mid,以此为基点进行分割,此过程可以使用递归来实现。
分割完毕后进行合并。
在这里插入图片描述

在这里插入图片描述
在经历分割之后,开始排序并合并。
在这里插入图片描述
在这里插入图片描述

void Bsort(int* arr, int left, int right, int* tmp)
{
if (left >= right)//若不可分割,返回
{
return;
}
int mid = (left + right) / 2;
Bsort(arr, left, mid, tmp);
Bsort(arr, mid + 1, right, tmp);
int begin1 = left, end1 = mid;
int begin2 = mid + 1, end2 = right;
int i = left;
while (begin1 <= end1 && begin2 <= end2)//合并数组
{
if (arr[begin1] < arr[begin2])
{
tmp[i++] = arr[begin1++];
}
else
{
tmp[i++] = arr[begin2++];
}
}
while (begin1 <= end1)//合并另一部分
{
tmp[i++] = arr[begin1++];
}
while (begin2 <= end2)
{
tmp[i++] = arr[begin2++];
}
for (i = left; i <= right; i++)
{
arr[i] = tmp[i];
}
}
void Sort(int* arr, int left, int right)
{
int len = right - 1;
int* tmp;
tmp = (int*)malloc(sizeof(int) * right);
Bsort(arr, left, len, tmp);
free(tmp);
}

最后

以上就是疯狂鸡为你收集整理的震惊!让博主彻夜未眠的原因竟是这个(归并排序(c语言))的全部内容,希望文章能够帮你解决震惊!让博主彻夜未眠的原因竟是这个(归并排序(c语言))所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部