当前位置: 首页 > SEO学院SEO知识

O [n]的复杂性基数排序为什么不尽快快排序

来源:未知 浏览量:277次
按照西瓜兄弟学习算法

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

老板:让我告诉你你已经学到了很多分类估计你能理解它。基数排序是一种基数“桶”。他的排序想法是这样的:首先对数据排序的一位数的大小网站流量下降的原因估计你能理解它。基数排序是一种基数“桶”。他的排序想法是这样的:首先对数据排序的一位数的大小然后对数据排序的十位数字的大小然后由数百位。数量的大小……

最后它是一组有序的元素。然而当他通过一定数量的各种数字他使用“桶”。的基本原理是把数字相同数量的数字(10数以百计等等)到相同的桶。让我直接给你一个例子这样你就可以理解它乍一看。

为例我们现在想这组元素排序:

为什么说 O(n) 复杂度的基数排序没有快速排序快

因为我们一定数字的每一个数字这个数字是0 - 9的范围所以我们需要10桶。

为什么说 O(n) 复杂度的基数排序没有快速排序快

在第一遍先按单一数字排序把数字相同的个位数到桶里。结果如下:

为什么说 O(n) 复杂度的基数排序没有快速排序快

然后从桶0到9的顺序取出秩序结果如下

为什么说 O(n) 复杂度的基数排序没有快速排序快

单一数字排序完成。

第二步由数万结果如下:

为什么说 O(n) 复杂度的基数排序没有快速排序快

拿出来又放回:

为什么说 O(n) 复杂度的基数排序没有快速排序快

十位数是排序最后结果是一组有序的元素。如果有一百位元素大不了是根据几百位再说一遍。

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

第二:那么我想问为什么我们开始从单一数字排序?你可以直接从最高位开始排序吗?如果你从最高位开始排序如果最高位的一个数比另一个数baidu指数如果最高位的一个数比另一个数那么这个数字必须大于其他号码和没有必要比较第二高。在这种情况下不是队列的速度成为可能?

为什么说 O(n) 复杂度的基数排序没有快速排序快

老板:我的大脑反应很快。是的它可以按最高的正如你所说最高位的数量可以减少排序的比较数据。但是我们仍然不推荐排名最高的位置因为它有一个致命的缺陷。

为什么说 O(n) 复杂度的基数排序没有快速排序快

为什么说 O(n) 复杂度的基数排序没有快速排序快

老板:让吗?年代使用的例子。我们的最高订单而寻找这种致命缺陷。数组如下(元素的顺序改变了一点):

第一遍:最高的十位数字进行排序结果如下(省略了一些未使用的桶):

为什么说 O(n) 复杂度的基数排序没有快速排序快

很明显不是一桶一桶的大小是已知的。也就是说右边的桶的数量必须大于左边桶的数量。所有在接下来的单一数字排序我们只需要执行“每一部分”单排序就够了每一小部分类似于原始问题的子问题并能以递归的方式被处理时这样做。

为什么说 O(n) 复杂度的基数排序没有快速排序快

最后排序可以完成:

为什么说 O(n) 复杂度的基数排序没有快速排序快

展开全部内容

相关信信