近似排序算法

时间:2015-11-09 11:45:44

标签: arrays algorithm sorting approximation

有没有人知道一种算法可以对k近似数组进行排序?

我们被要求找到和算法进行k近似排序,它应该在O(n log(n / k))中运行。但我似乎无法找到任何。

K-约排序意味着一个数组和任何1< = i< = nk使得和a [j]< = sum a [j] i< = j< = i + k-1 i + 1< = j< = I + K

1 个答案:

答案 0 :(得分:1)

我知道我的问题已经很晚了......但是假设 k 是0和1之间的一些近似值(当0完全未排序且1完全排序时)肯定答案是快速排序(或合并)。

考虑以下数组:

[4, 6, 9, 1, 10, 8, 2, 7, 5, 3]

假设这个数组是'未排序' - 现在将一个quicksort迭代应用于此数组,并将(length [array] / 2) th 元素作为pivot:length [array] / 2因此,5 th 元素是我们的支点(即8):

[4, 6, 2, 1, 3, 9, 7, 10, 8]

现在这个数组没有排序 - 但是它比一次迭代更加有序,即它的近似排序但是低近似值,即 k 的低值。在阵列的两半上再次重复此步骤,它变得更加有序。随着 k 向1增加 - 即完全排序 - 复杂性变为O(N log(N/1)) = O(N log(N))