第一步:生成数据第二步:读取数据第三步:创建队列第四步:入队分配第五步:出队收集重复第四步与第五步,直到出队入队各四次,完成基数排序:如下:4次入队结束后如下:最后一次出队:基数排序完成。。。。。
分类:
其他好文 时间:
2014-05-23 04:06:51
阅读次数:
355
常见排序算法主要有:插入排序(直接插入排序、希尔排序)选择排序(直接选择排序、堆排序)交换排序(冒泡排序、快速排序)归并排序基数排序外部排序一.直接插入排序算法思想:在一个待排序列中,从第二个元素开始,依次进行排序,每次都将待排序元素从后往前,依次与前面的元素进行比较,从而将带排序元素移动到一个合适...
分类:
其他好文 时间:
2014-05-21 20:03:36
阅读次数:
353
计数排序的基本思想是:统计一个数序列中小于某个元素a的个数为n,则直接把该元素a放到第n+1个位置上。当然当过有几个元素相同时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数
1 #include 2 void sort(int *A, int *B....
分类:
其他好文 时间:
2014-05-21 18:07:55
阅读次数:
294
第一、任意一个比较排序算法在最好情况下的时间复杂度也是O(nlogN);
第二、计数排序
假设n个输入元素的每一个都是介于0到k之间的整数,计数排序可用,需要临时存储空间O(K),时间复杂度是O(n).
#include
using namespace std;
void countingSort(int *A,int len,int max)
{
if(A==NULL || len<...
分类:
其他好文 时间:
2014-05-14 23:58:58
阅读次数:
382
基数排序思想:分配桶,把待排序的数字按照从低到高的顺序排列。主要有两个过程,分配和收集。
分配时,根据数字的位数,从小到大存放到桶中。 收集时,按照顺序,再覆盖原数组。 重复分配和收集的过程,直到到数字的最高位。 好长时间不写C++代码了。。。
代码如下: #include #inc...
分类:
其他好文 时间:
2014-05-14 13:55:13
阅读次数:
239
前面三篇文章分别介绍了插入排序、选择排序和,今天将最后两个排序讲完,分别是归并排序和基数排序。...
分类:
其他好文 时间:
2014-05-14 01:13:39
阅读次数:
346
排序算法有很多,冒泡排序,选择排序,堆排序,快速排序,归并排序,基数排序……其中平均复杂度O(nlogn)的排序算法或者在某方面有特殊优势的算法在ACM中才有实际使用价值,所以上述提到的前2种大家以后就不要用了。其他排序算法大家会慢慢接触,本文主要介绍使用最多的排序函数
sort。大家可能会遇到qs...
分类:
其他好文 时间:
2014-05-12 09:24:26
阅读次数:
323
线性排序的一种(时间复杂度为(n))
计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。
计数排序的特征
当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。
由于用...
分类:
其他好文 时间:
2014-05-09 21:05:32
阅读次数:
309
#include using namespace std;void CountSort(int*
a,int k,int n){ int s = 1; for(int i=0;i=0;i--){ tmp1 = a[i]; tmp2 = a[i] % s;
...
分类:
其他好文 时间:
2014-05-08 22:42:33
阅读次数:
382
对公司所有员工的年龄进行排序,公司总共有几万名员工,要求时间复杂度为O(n)。
很明显的计数排序题目,员工的年龄肯定在一个范围之内,我们这里假设在0-99之内,算很大了,这样就可以开辟一个长度为100的数组,保存各个年龄的员工的个数。...
分类:
其他好文 时间:
2014-05-07 15:35:12
阅读次数:
286