基数排序与基数排序是两种非比较型排序。计数排序:
//************计数排序*********
//先最大-最小+1得到开辟空间数,开辟空间str,在遍历原数据arr在str相应位置计数,再遍历str将值写到原arr中
//适用在密集型数据, 无重复最优可转化为位图
//时间复杂度O(N),空间复杂度O(最大数-最小数+1)
//设数组元素非负
void Count
原创
2016-05-22 13:15:20
738阅读
1.基数排序(桶排序)介绍:基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的 稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是 1887 年
转载
2023-09-16 12:17:22
75阅读
对于一个int数组,请编写一个基数排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
>
参考文档:http://www.cnblogs.com/Braveliu/archive/2013/01/21/2870201.html
我的提交
#
转载
2017-12-25 17:18:44
3334阅读
点赞
基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。比较官方地说,基数排序是一种基于多关键字的排序。基数排序具体过程如下: 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 然后,从最低位开始,依次进行一次排序。这个排序并非比较大小,而是将对应的数字放置在其对应的桶中。即个位数字是0的数字放置在索引为0的
原创
2022-08-01 11:15:04
100阅读
/* * 基数排序 * 思路:就是先准备十个桶,每一个桶就是一个一维数组,十个就定义一个二维数组
原创
2022-10-28 09:59:23
26阅读
桶排序在介绍基数排序之前,我们先看看桶排序的原理。假设我们有N个学生,他们的成绩是0到100之间的整数(于是有M = 101个不同的成绩值)。如何在线性时间内将学生按成绩排序?在这个例子中我们看到数据的特殊性,学生可以有很多,但是种类就只有101种,我们建立101个桶,每个桶一个成绩值,桶中的存放的是链表,相同成绩的学生在对应的桶中构成链表,扫描每个学生的成绩,依次将其插入到对应的桶中。...
原创
2021-07-12 16:17:26
646阅读
原理基数排序的思想其实挺有意思,举个栗子来说,有如下数组: 第一趟:我们首先对这个数组按照其个位数进行分组,结果如下: 然后将分组后的数据按照索引的大小取出,得到新的数组如下
原创
2021-07-13 10:09:43
160阅读
今天,我们一起用C
原创
2021-07-19 11:07:39
93阅读
基数排序 最高位优先(Most Significant Digit first) MSD:先按最高位排成若干子序列,然后再对每个子序列按次高位排序。 最低位优先(Least Significant Digit first) LSD:先按最低位排成若干子序列,然后再对每个子序列按次低位排序。 示例 对
转载
2020-07-28 20:39:00
295阅读
2评论
今天,我们一起用C++实现基数排序,具体代码如下:Data.h具体内容如下:template class Element{public: Type GetKey(){ return key; } void SetKey(Type item){ key = item; }public: ...
转载
2014-09-14 18:11:00
121阅读
2评论
使用10个辅助队列,假设最大数的数字位数为 x, 则一共做x次,从个位数开始往前,以第i位数字的大小为依据,将数据放进辅助队列,搞定之后回收。下次再以高一位开始的数字位为依据。 以Vector作辅助队列,基数排序的Java代码:
转载
2018-10-22 02:55:00
77阅读
2评论
前言 基数排序的排序原理不难理解,但是在算法设计上,个人感觉还是比那些常见的排序要难的,耐心慢慢一步步理解,还是比较容易看懂的,注意基数排序有两种,一种是高位优先,一种是低位优先,在这里我只讲低位优先,即先排个位,再排十位………. 时间复杂度 基数排序的时间复杂度为O (nlog(r)m),其中r为
转载
2019-07-15 12:05:00
135阅读
2评论
第一步以LSD为例,假设原来有一串数值如下所示:73, 22, 93, 43, 55, 14, 28, 65, 39, 81首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中:01 812 223 73 93 434 145 55 65678 289 39第二步接下来将这些桶子中的数值
转载
2019-11-05 16:45:00
98阅读
2评论
基数排序的C语言描述:#include<stdio.h>typedef struct{ int num; int next;}slcell; //
转载
2011-02-26 10:55:00
91阅读
2评论
基数排序(不是基于比较的排序):非负数的十进制数 时间复杂度为O(N),额外空间负载度O(M) 基本思想: 找出要排序的所有数字中的最大数,看他的位数,把其他没有达到位数的数字前面补零,然后准备0~9的10个桶(队列),先按照个位进行入桶,然后按顺序把他们倒出来,先进桶的先倒出,再按照十位,百位。。 ...
转载
2021-10-15 16:42:00
94阅读
2评论
基数排序 算法思想 基数排序不基于比较和移动,而是基于关键字的大小进行排序。 基数排序通常有最高位优先与最低为优先两种实现方法。 主要思想为:按照关键字的权重大小依次进行排序,最后形成一个有序序列。 实现思路 取到数组中的最大值,计算出它的位数,设为n(它的位数就是最外层循环的次数) 如何计算位数 ...
转载
2021-10-26 19:10:00
143阅读
2评论
题目:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1124题意:Description已
原创
2017-09-13 18:07:42
40阅读
声明:此文章部分百度百科。基本解法第一步以LSD为例,假设原来有一串数值如下所示:73, 22, 93, 43, 55, 14, 28, 65, 39, 81首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中:01 812 223 73 93 434 14
原创
2022-08-11 15:29:36
43阅读
#ifndef _LINK_QUEUE_H_
#define _LINK_QUEUE_H_
typedef int elem_type;
typedef struct _NODE
{
elem_type data;
struct _NODE *next;
}NODE;
typede
原创
2016-04-01 22:50:20
331阅读
1 def radix(li): 2 # 1. 创建桶 3 max_mun = max(li) 4 buckets = [[] for _ in range(10)] 5 # 2.将数放到对应的桶里 6 it = 0 7 while 10 ** it <= max_mun: 8 for value ...
转载
2021-07-16 15:40:00
152阅读
2评论