摘要: 本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较排 ...
分类:
编程语言 时间:
2018-02-23 16:00:03
阅读次数:
187
任何比较排序在最好情况下都要经过Ω(nlgn),即比较排序的下界为Ω(nlgn)。 合并排序和堆排序都是渐进最优的。 要突破Ω(nlgn),就要进行非比较排序。计数排序、基数排序和桶排序都有非比较的一些操作来确定排序顺序,它们可以达到线性运行时间。 这三种排序都是以空间换时间。应用的不广,先不细看了 ...
分类:
编程语言 时间:
2018-02-06 01:26:19
阅读次数:
167
一、原理 桶排序的工作原理是吧区间划分为n个大小相同的子区间,这样的区间称为桶。然后将n个输入的数分步到各个桶中去。每个桶再个别的排序,然后按照次序吧各个桶 中的元素列出来即可。 二、时间复杂度 桶排序是一种鸽巢排序的一种归纳结果。当要被排序阵列内的数值是均匀分配的时候,桶排序使用线性时间(O(n) ...
分类:
编程语言 时间:
2018-02-05 20:00:35
阅读次数:
165
一、简介 1954年提出,是一个不需要比较的,类似于桶排序的线性时间排序算法。该算法是对于已知数量范围的数组进行排序。时间复杂度为O (n),适用于小范围集合的排 序。计数排序是用来排序0到100之间的数 字的最好的算法。 二、基本思想 对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素 ...
分类:
编程语言 时间:
2018-02-04 15:37:52
阅读次数:
363
之前的博文写了交换(冒泡)排序、选择排序,本文就写写桶排序。不过我理解的这样不算是真正上的桶排序,我的比较简单而真正的桶排序是比较复杂的,暂且就叫桶排序吧。 桶排序在排序中应该用的不多吧,个人理解的是比较简单易懂的,针对小量数据的排序很有用,不过有个小缺点就是只适合在屏幕上打印输出,实际的应用中我们 ...
分类:
编程语言 时间:
2018-02-02 23:21:52
阅读次数:
263
问题描述: 输入是由一个随机过程产生的[0, 1)区间上均匀分布的实数。将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…,[k/n, (k+1)/n ),…将n个输入元素分配到这些桶中,对桶中元素进行排序,注意, ...
分类:
编程语言 时间:
2018-01-14 19:36:05
阅读次数:
236
1)插入排序(从第二个元素开始,依次从剩余元素中选择一个,插入到前面有序的子序列中) 2)快速排序(不是稳定的排序,平均时间复杂度O(nlogn)) 3)归并排序(是稳定的排序算法,时间复杂度O(nlogn)) 4)堆排序(不是稳定的排序,时间复杂度O(nlogn)) 5)计数排序、基数排序、桶排序 ...
分类:
编程语言 时间:
2017-12-20 21:54:33
阅读次数:
193
七、桶排序(Bucket Sort) 要使桶排序正常运行,需要额外的信息: 输入A1,A2,...,AN必须只由小于M的正整数构成,即Ai<M。使用一个大小为M的数组result,初始化为全0。数组有M个单元,即M个桶(bucket)。 步骤: result[Ai]中存放的是Ai出现的次数; 读入A ...
分类:
编程语言 时间:
2017-12-12 22:10:08
阅读次数:
217
冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序 O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组 冒泡排序 主要思想:外层循环从1到n-1,内循环从当 ...
分类:
编程语言 时间:
2017-12-11 01:03:47
阅读次数:
378