【问题标题】:approximate sorting Algorithm近似排序算法
【发布时间】:2015-11-09 11:45:44
【问题描述】:

有没有人知道对 k 近似排序的数组的算法?

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

K-约。排序意味着一个数组和任何 1

【问题讨论】:

  • 我想知道这里的目标是否是将 n 元素分成 k 组,以便第 0 组中的所有元素都小于第 1 组中的所有元素,第 1 组元素小于第 2 组元素。 .. 组 k-2 元素小于组 k-1 元素。每个组中的元素不会被排序。这可以使用中位数的中位数快速选择(n/5 版本)来完成,
  • 不,不是。 K-约。排序意味着一个数组和任何 1
  • “ASort 算法的思想是将产品划分为大小相等的 bin 的排序序列,使得每个 bin 中的元素的排名小于后续 bin 中的任何元素” - 来自 @987654321 @ .我搜索了 K 近似排序,但只找到了近似排序,所以也许我在这里遗漏了一些东西。

标签: arrays algorithm sorting approximation


【解决方案1】:

我知道我问这个问题很晚了......但是假设 k 是介于 0 和 1 之间的某个近似值(当 0 完全未排序而 1 完全排序时)肯定答案是快速排序(或归并排序)。

考虑以下数组:

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

假设这个数组是“未排序的” - 现在对这个数组应用一次快速排序迭代,以 (length[array]/2)th 元素为轴:length[array]/2 = 5。所以第 5th 元素是我们的支点(即 8):

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

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

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2011-10-26
    • 2011-04-28
    • 2010-09-08
    相关资源
    最近更新 更多