算法 – 面试问题:反向对

我得到了这个面试:

如果N [i]>数字被称为“反向排序” N [j]学家
例如,在列表中:3 4 1 6 7 3,相反的订单项是(3,1)(4,1)(4,3)(6,3)(7,3).

如何在O(nlogn)时间内获得反向有序项目的数量.

使用合并排序的修改版本可以在O(n log n)时间内执行此操作.做正常的分裂,但你可以在合并时计数反转.每次从左侧列表中的一个项目中选择正确的列表中的一个项目,则会将反转计数增加到左侧列表中剩余的项目数.因此,在每个级别,反转次数是合并期间发现的反转次数加上每个递归调用发现的倒数.
翻译自:https://stackoverflow.com/questions/3836767/interview-question-reverse-pairs

转载注明原文:算法 – 面试问题:反向对