排序算法学习之归并排序(2-路归并排序)

本文介绍了2-路归并排序的基本思路和工作原理,通过动态图解展示了排序过程。归并排序由约翰-冯诺伊曼发明,其时间复杂度为O(nlogn),空间复杂度为O(n)。该排序算法稳定,能保持相等关键字记录的相对位置不变。

归并排序

基本思路:

假设初始序列有n个记录,则可看成是n个有序的子序列,每个序列长度为1,然后两两归并,得到\left \lceil n/2 \right \rceil个长度为2或者是1的有序子序列;再两两归并,,,,如此重复,直到得到一个长度为n的有序序列为止,这种排序方法称为2-路归并排序。

详细动态图解(详细图解)-------号外:归并排序发明者竟然是约翰-冯诺伊曼


归并操作的工作原理如下:

第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列

第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置

第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置

重复步骤3直到某一指针超出序列尾

将另一序列剩下的所有元素直接复制到合并序列尾


//前子序列为从start到index,后子序列从index+1到end,现在需要将2个有序子序列进行归并成一个有序序列
void Merge(SqList *L,int start,int i
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值