一、原理 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 步骤: (1)创建10个桶(列表)分别给每一个数位 (2)遍历每个数位 (3)遍历列表中的每个 ...
分类:
编程语言 时间:
2019-06-30 17:16:15
阅读次数:
111
一、原理 桶排序是计数排序的升级版,如果计数排序中数的范围比较大呢?之前的计数排序数字范围是1-200,假如1-20000呢?利用桶排序就可以对其进行优化。 步骤: (1)将元素分在不同的桶中 (2)在对每一个桶中的元素进行排序 桶排序的的快慢取决于数据的分布: 当输入的数据可以均匀的分配到每一个桶 ...
分类:
编程语言 时间:
2019-06-30 17:15:51
阅读次数:
104
1.堆排序基数排序适用于大小有界的东西,除了他之外,还有一种你可能遇到的其它专用排序算法:有界堆排序。如果你在处理非常大的数据集,你想要得到前 10 个或者前k个元素,其中k远小于n,它是很有用的。 例如,假设你正在监视一 个Web 服务,它每天处理十亿次事务。在每一天结束时,你要汇报最大的k个事务 ...
分类:
编程语言 时间:
2019-06-29 13:08:31
阅读次数:
126
``` def bucketSort(nums): #选择一个最大的数 max_num = max(nums) # 创建一个元素全是0的列表, 当做桶 bucket = [0]*(max_num+1) # 把所有元素放入桶中, 即把对应元素个数加一 for i in nums: print(f"{b... ...
分类:
编程语言 时间:
2019-06-16 16:23:13
阅读次数:
157
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序; O(n1+§)) ...
分类:
编程语言 时间:
2019-06-14 21:54:58
阅读次数:
155
快速选择 堆 1. Kth Element 桶排序 1. 出现频率最多的 k 个元素 2. 按照字符出现次数对字符串排序 荷兰国旗问题 1. 按颜色进行排序 1. Kth Element 1. 出现频率最多的 k 个元素 2. 按照字符出现次数对字符串排序 1. 按颜色进行排序 快速选择 用于求解 ...
分类:
编程语言 时间:
2019-06-12 14:00:07
阅读次数:
165
题目描述: 不使用比较排序,实现一个数组排序 时间复杂度O(N),额外空间复杂度O(N) 解题思路: 使用桶排序思维,申请一个额外数组,叫桶,用来记录数字出现的次数,然后输出即可,但桶排序一般适用于0-9的元素数字排序,因为此时桶只需申请0-9的空间,若array元素为999,则桶的空间至少得申请0 ...
分类:
编程语言 时间:
2019-06-07 13:04:08
阅读次数:
137
这里详细讲解了十大经典算法的分类,例如交换排序、插入排序、选择排序等比较类排序,以及计数排序、桶排序和基数排序的非比较类排序,分析了各种排序算法的复杂度和稳定性,还有JAVA代码的详细实现。对冒泡排序、插入排序、选择排序和堆排序等十种算法进行了详细的思想总结。
分类:
编程语言 时间:
2019-06-03 20:21:15
阅读次数:
125
题意 给定一个整形数组arr,返回排序后的相邻两数的最大差值。 题解 借助桶排序思想。 首先遍历一遍获得最大值max,最小值min。 设数组长度为len,则有len+1个桶,桶负责的区间大小是(max min)/len,数字num放入的桶id是(num min)/((max min)/len)即(n ...
分类:
编程语言 时间:
2019-05-30 01:43:01
阅读次数:
102
1、基数排序算法的简单介绍 关于基数排序算法的介绍有很多资料可以通过很多途径获取。基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,即通过将所有数字分配到应在的位置最后再覆盖到原数组完成排序的过程。 基数排序算法: 是一种非比较方法 ...
分类:
编程语言 时间:
2019-05-27 13:50:38
阅读次数:
175