归并排序
基本思路:
假设初始序列有n个记录,则可看成是n个有序的子序列,每个序列长度为1,然后两两归并,得到个长度为2或者是1的有序子序列;再两两归并,,,,如此重复,直到得到一个长度为n的有序序列为止,这种排序方法称为2-路归并排序。
详细动态图解(详细图解)-------号外:归并排序发明者竟然是约翰-冯诺伊曼
归并操作的工作原理如下:
第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置
第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针超出序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
//前子序列为从start到index,后子序列从index+1到end,现在需要将2个有序子序列进行归并成一个有序序列
void Merge(SqList *L,int start,int i

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

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



