Sorting 基于比较的排序技术的局限性

Sorting 基于比较的排序技术的局限性,sorting,Sorting,在大多数需要对数据进行排序的场景中,都会选择比较排序。诸如合并排序、快速排序、插入排序和其他比较排序等技术可以处理不同的数据类型和效率,下限为O(nLog(n)) 我的问题是 基于比较的排序技术是否存在任何限制 使用非比较排序技术的任何场景 干杯你或多或少是自己回答的。基于比较的排序技术被限制在O(n Log(n))的下限。基于非比较的排序技术不受此限制。非排序算法的一般问题是必须更好地了解域,因此它们不如基于比较的技术那样通用 这是一个很好且非常简单的例子,只要可能的键值的数量接近元素的数量,

在大多数需要对数据进行排序的场景中,都会选择比较排序。诸如合并排序、快速排序、插入排序和其他比较排序等技术可以处理不同的数据类型和效率,下限为O(nLog(n))

我的问题是

  • 基于比较的排序技术是否存在任何限制
  • 使用非比较排序技术的任何场景

  • 干杯

    你或多或少是自己回答的。基于比较的排序技术被限制在O(n Log(n))的下限。基于非比较的排序技术不受此限制。非排序算法的一般问题是必须更好地了解域,因此它们不如基于比较的技术那样通用


    这是一个很好且非常简单的例子,只要可能的键值的数量接近元素的数量,它就会非常快。

    显然,比较排序的限制是时间因素-,但是如果数据集足够大,它们在某个点上都会变得太慢。诀窍是根据您要排序的数据的种类和组合选择正确的一个


    非比较排序基于忽略数据的其他因素,例如,将通过检查每个元素对数据集合进行排序,而不是将其与集合中的任何其他值进行比较。计数排序对于根据某些数据对集合进行排序很有用,如果您有一个整数集合,它会对它们进行排序,方法是先将值为1的所有元素放入目标,然后将值为2的所有元素放入目标,等等(好的,它使用“稀疏”数组以快速缩放集合并重新排序值,留下间隙(但这是基本原则)

    很容易看出,为什么比较排序需要大约N个log N个比较。有N个!置换,如我们所知,ln(N!)大约是N-N+O(ln)。在大O表示法中,我们可以忽略小于N的项,因为ln和log只有常数不同,所以我们得到最终结果O(N logN)