Radix Sort

1. When we are sorting the numbers we will first find the number of digits in the biggest number.

2. If there are N digits in the biggest number then we will need to perform N number of pass.

3. We will pad the remaining numbers with leading zeros so they all have N digits.

4. Then we will take 10 buckets labeled 0 to 9 and sort the numbers.

Time Complexity : O(N*n)  where N is the digits of the biggest number, and n is the length of the array.

Space Complexity: O(1), it will take 10 buckets.

https://www.youtube.com/watch?v=YXFI4osELGU

时间: 2024-10-14 09:05:54

Radix Sort的相关文章

排序算法七:基数排序(Radix sort)

上一篇提到了计数排序,它在输入序列元素的取值范围较小时,表现不俗.但是,现实生活中不总是满足这个条件,比如最大整形数据可以达到231-1,这样就存在2个问题: 1)因为m的值很大,不再满足m=O(n),计数排序的时间复杂也就不再是线性的: 2)当m很大时,为计数数组申请的内存空间会很大: 为解决这两个问题,本篇讨论基数排序(Radix sort),基数排列的思想是: 1)将先按照某个基数将输入序列的每个元素划分成若干部分,每个部分对排序结果的影响是有优先级的: 2)先按低优先级排序,再按高优先级

基数排序(radix sort)

1 #include<iostream> 2 #include<ctime> 3 #include <stdio.h> 4 #include<cstring> 5 #include<cstdlib> 6 #include <map> 7 #include <string> 8 using namespace std; 9 // A utility function to get maximum value in arr[]

【算法导论学习-015】基数排序(Radix sort)

1.<算法导论>P197页 8.3节Radix sort 2.java实现 这里仅仅对[算法导论学习-014]计数排序 的参数进行了修改,同时仅仅修改了一行代码. /** * 创建时间:2014年8月17日 下午4:05:48 * 项目名称:Test * @author Cao Yanfeng * @since JDK 1.6.0_21 * 类说明: 利用计数排序实现基数排序 * 条件:待排序的所有数位数相同,注意,即便不相同,也可以认为是最多那个位数,如下面的例子可以认为都是3位数 */ p

经典排序算法 - 基数排序Radix sort

经典排序算法 - 基数排序Radix sort 原理类似桶排序,这里总是需要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数 例如 待排序数组[62,14,59,88,16]简单点五个数字 分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样 |  0  |  0  | 62 |  0  | 14 |  0  | 16 |  0  |  88 | 59 | |  0  |  1  |  2  |  3  |  4 | 

算法-基数排序(radix sort)

本文由@呆代待殆原创,转载请注明出处. 简介:这个排序是原来用在卡片排序机上的一个算法,一般用来比较具有多对关键字域的记录,如日期(年月日),通过基数排序我们会依次对年月日这三个关键字进行排序,只要对每个关键字进行排序的算法是稳定的,那么最后输出的序列就一定是正确的. 思路:基数排序思路很简单,首先取第一个关键字,然后对其进行排序,在第一次排序的基础上取第二个关键字,再对其进行排序,直到遍历完所有的关键字,一般用计数排序实现基数排序. 算法分析 时间复杂度:Θ(i*x)  i 是关键码的数量,x

算法学习-基数排序(radix sort)卡片排序(card sort) C++数组实现

基数排序又叫卡片排序,这是在比较早的时候用的比较多的排序方法. 在现代计算机出现之前,一直用于老式穿孔卡的排序. 说下基数排序的思想,前面我有写一个桶式排序,基数排序的思想是桶式排序的推广. 桶式排序:http://blog.csdn.net/alps1992/article/details/38132593 基数排序的思想是在于只有10个桶,而不是最大数是多少就有多少个桶.假如我们有10个乱序的数字. 第一趟排序之后 0 1 512 343 64 125 216 27 8 729 0 1 2

桶排序/基数排序(Radix Sort)

说基数排序之前,我们先说桶排序: 基本思想:是将阵列分到有限数量的桶子里.每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序).桶排序是鸽巢排序的一种归纳结果.当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n)).但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响.          简单来说,就是把数据分组,放在一个个的桶中,然后对每个桶里面的在进行排序. 例如要对大小为[1..1000]范围内的n个整数A[1..n]排序 首

【sort】 基数排序

下面这段问答摘自csdn: 把基数排序说成桶排序应该是没有太大问题的.总的说来,应该把这一类归为分配排序,由于分配排序的一些缺陷,主要是时间代价很差,改进成为桶式排序(bucket sort),而桶排序的基本思路是将较少的纪录分配到每个桶,然后用较快的“收尾排序”来对每桶中的纪录进行排序.在此基础上,当允许基于分配排序的收尾排序时,为了尽量减少桶的数量并缩短排序时间,发展出了基数排序(Radix Sort).基数的选择:如果是数字,最常用的是2和10这两个了,当然是由于二进制和十进制的关系,就如

360. Sort Transformed Array

Given a sorted array of integers nums and integer values a, b and c. Apply a function of the form f(x) = ax2 + bx + c to each element x in the array. The returned array must be in sorted order. Expected time complexity: O(n) Example: nums = [-4, -2,