欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

排序算法之--归并排序(好玩的一个算法o。o)快速入门

发布时间:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的这篇文章主要介绍了 排序算法之--归并排序(好玩的一个算法o。o)快速入门 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

排序算法之--归并排序(好玩的一个算法o。o)

下面是归并操作的基本思路(注意:是归并操作哦,不是归并排序哦)

归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置 第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针超出序列尾 将另一序列剩下的所有元素直接复制到合并序列尾。



大家需要注意的是,进行归并操作来实现数组排序的前提是:归并操作两边的数组要都是有序的(所以这里又涉及到了递归的过程,而单单递归好像也没用哦,有用的递归是从小范围开始递归到大范围,所以这里又涉及到了,中分递归)。

了解了这个大题的四路:归并排序其实也不是很难理解了哦。

直接上个图,便于理解:


图片的分解其实就相当于中分递归,后面的合并其实就是归并操作;

先来了解一下归并操作的编程部分:

先定义两个指针,一个指向左边,一个指向中间+1,再定义一个辅助数组help[](说明其空间复杂度为O(N)哦)

来比较一下大小,小的元素放到辅助数组中,并将下标++,直到两个指针有一个为空,跳出,将另外一部分还没放到辅助数组的元素拷贝到辅助数组中去。下面供上流程图:



通俗易懂就是这个:

下面对程序进行分析:

26~30行定义变量和数组

31,32判断有没有越界,没有越界就比较大小,小的放进去,同时辅助数组下标++,比较小的指针也++

37~47则是将将另外一部分还没放到辅助数组的元素拷贝到辅助数组中去。

到这里那我们就直接上程序了哦。



下面就是所谓的中分递归和归并递归了;


总结

以上是生活随笔为你收集整理的排序算法之--归并排序(好玩的一个算法o。o)快速入门的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。