jpa*_*cek 10
算法本身非常简单 - 基本上你在树中插入所有元素,然后遍历树以按顺序读取元素.
为了获得几乎已经排序的序列的更好性能,它使用以下修改:
b>2a-1,具有O(1)分摊的插入重新平衡时间.要利用O(1)插入时间,您只需快速找到下一个元素所属的位置,假设序列几乎已排序(因此它与前一个元素插入的位置相差不远).这大致如下:
这样,您可以逐步遍历a^k树的元素k,因此,您将花费O(log(distance(current, previous))时间为新元素找到合适的位置.考虑到摊销的O(1)再平衡,你可以比O(n log n)几乎排序的序列更好,同时保持O(n log n)最坏情况.