与其它排序算法相比,二路归并最适合于对两个有序子表进行排序。归并长度分别为 m 和 n 的两个有序子表,经典算法有两种。第一种算法完成归并需要○(m+n)的附加空间,○(m+n)次比较和移动。第二种算法是原地的,但完成归并需要○(m+n)次...与其它排序算法相比,二路归并最适合于对两个有序子表进行排序。归并长度分别为 m 和 n 的两个有序子表,经典算法有两种。第一种算法完成归并需要○(m+n)的附加空间,○(m+n)次比较和移动。第二种算法是原地的,但完成归并需要○(m+n)次比较和○(m×n)次移动。经过长期研究,提出了一种基于数据分块的快速原地归并算法。新算法通过将数据分块、对数据块排序等方法最多用○((m+n)log_2 (m+n)^(1/2)次比较和○((m+n)^(3/2))次移动完成两个有序子表的原地归并。实验证明,该算法与经典的原地算法相比,极大地降低了元素的移动次数和算法的运行时间。展开更多
文摘与其它排序算法相比,二路归并最适合于对两个有序子表进行排序。归并长度分别为 m 和 n 的两个有序子表,经典算法有两种。第一种算法完成归并需要○(m+n)的附加空间,○(m+n)次比较和移动。第二种算法是原地的,但完成归并需要○(m+n)次比较和○(m×n)次移动。经过长期研究,提出了一种基于数据分块的快速原地归并算法。新算法通过将数据分块、对数据块排序等方法最多用○((m+n)log_2 (m+n)^(1/2)次比较和○((m+n)^(3/2))次移动完成两个有序子表的原地归并。实验证明,该算法与经典的原地算法相比,极大地降低了元素的移动次数和算法的运行时间。