排序算法 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

归并排序算法思想

将已有序的子序列合并,得到完全有序的序列;设两个有序的子序列放在同一向量中相邻的位置上:a[low..m],a[m+1..high],先将它们合并到一个局部的暂存向量 a1中,待合并完成后将 a1 复制回 a[low..high]中。

归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。归并排序的算法我们通常用递归实现,先把待排序区间[s,t]以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。


归并排序例子

query


时间复杂度为O(nlogn) 是归并排序算法中最好、最坏和平均的时间性能。空间复杂度O(n)。归并排序比较占用内存,但却是一种效率高且稳定的排序算法算法。