当前位置:网站首页 > 技术博客 > 正文

归并排序算法步骤



在这里插入图片描述

基本思想:

采用“分治”的思想,对于一组数据,选择一个基准元素(base),通常选择第一个或最后一个元素,通过第一轮扫描,比base小的元素都在base左边,比base大的元素都在base右边,再有同样的方法递归排序这两部分,直到序列中所有数据均有序为止。

图文详解 :

[3,4,6,1,2,4,7] 为例,以第一个元素3为base,定义左右两个指针(小熊l,小熊r),分别从两端开始扫描。从右向左找比3小的数,替换l所在位置的元素。再从左往右找比3大的数,然后替换r所在位置的元素。重复此过程直至两个小熊重合(两个指针指向同一元素),base替换此元素,此时第一轮结束。再递归排序base左右两部分的元素。

刚开始的时候让🐻l 指向序列的最左边,指向数字3。让🐻r 指向序列的最右边,指向数字 7

在这里插入图片描述

首先🐻r出动,一步步向左移,直到找到比base小的数停下来,替换此时🐻l所在位置的元素
在这里插入图片描述

替换后的序列为 [2,4,6,1,2,4,7]
在这里插入图片描述

🐻l出动,向右移直到找到比base大的数停下来,替换此时🐻r所在位置的元素
在这里插入图片描述

替换后的序列为 [2,4,6,1,4,4,7],🐻r再次出动,重复上述步骤

在这里插入图片描述

比base小,替换🐻l所在位置的元素
在这里插入图片描述

替换后的序列为[2,1,6,1,4,4,7],🐻l再次出动
在这里插入图片描述

比base大,替换🐻r所在位置的元素

在这里插入图片描述

替换后的序列为[2,1,6,6,4,4,7],🐻r再次出动

在这里插入图片描述

此时🐻l、🐻r指向同一元素
在这里插入图片描述

base替换此元素
在这里插入图片描述

第一轮扫描完成,序列为 [2,1,3,6,4,4,7],此时base(3)左边的元素都比它小,右边的元素都比它大,再对这两部分进行上述操作。
在这里插入图片描述

代码实现 :

 
  

采用分治的思想,先找到 每次分割的点 pos ,再排序。

 
  

                            

  • 上一篇: java设置请求头
  • 下一篇: 班智达藏文怎么打
  • 版权声明


    相关文章:

  • java设置请求头2025-07-30 08:01:02
  • ftok函数作用2025-07-30 08:01:02
  • 卖淫女子为躲检查意外坠亡2025-07-30 08:01:02
  • assert语句2025-07-30 08:01:02
  • 梅尔倒谱系数matlab2025-07-30 08:01:02
  • 班智达藏文怎么打2025-07-30 08:01:02
  • linux ntp同步命令2025-07-30 08:01:02
  • 单个队列训练七个内容顺序2025-07-30 08:01:02
  • opencasecade occ2025-07-30 08:01:02
  • 数据泵导入dmp文件语句2025-07-30 08:01:02