比较排序的极限是O(nlgn)而计数排序非比较排序 他的复杂度只有O(n)基本思想是: 1、统计a数组中每个数字出现的次数放在临时数组c中,c的大小为a中最大的数 2、在第一步统计的基础上遍历一遍统计小于等于i的数出现的次数即c[i]+=c[i-1] 3、通过数组c确定a[i]的位置,放在结果...
分类:
编程语言 时间:
2015-05-20 20:17:57
阅读次数:
127
桶排序_BUCKETSORT
桶排序的思想
桶排序的代码编写
总结桶排序_BUCKETSORT假设你有五百万份试卷,每份试卷的满分都是100分,如果要你对这些试卷按照分数进行排序,天噜啦,五百万份试卷啊,快速排序?堆排序?归并排序?面对这么多的数据,平均下来上面的每一种一种算法至少都要花费nlogn=5000000log5000000=111267433nlogn=5000000log5000000...
分类:
编程语言 时间:
2015-05-20 14:54:16
阅读次数:
136
详细讲解见《2015版数据结构高分笔记》8.6节——基数排序。
Java代码如下:
package linetimesort;
import java.util.LinkedList;
import java.util.Objects;
/**
* 基数排序的思想是多关键字排序
* @author yuncong
*
*/
public class RadixSort {
/**...
分类:
编程语言 时间:
2015-05-19 22:51:24
阅读次数:
145
在之前写过的插入排序,归并排序,堆排序,快排都是比较排序,它们个个元素之间的次序依赖于他们之间的比。
计数排序不是一个比较排序的算法,它的所有代码完全没有在输入元素之间的比较。计数排序的基本思想是:对没一个输入元素x,确定小于x的元素个数。用这个信息,就可以把x放到它输出数组上的位置。
#include
#include
using namespace std;
void countsort(...
分类:
编程语言 时间:
2015-05-19 22:50:20
阅读次数:
166
详细讲解见《算法导论》8.2节——计数排序。
Java代码如下:
package linetimesort;
/**
* 计数排序假设n个输入元素中的每一个都是介于0到k之间的某个整数,k为某个整数;它
* 通过确定小于等于一个数的数的个数来确定这个数应该放在哪个位置
* @author yuncong
*
*/...
分类:
编程语言 时间:
2015-05-19 22:49:45
阅读次数:
176
详细讲解见《算法导论》8.4节——桶排序。
Java代码如下:
package linetimesort;
import java.util.LinkedList;
import sort.InsertSort;
/**
* 桶排序假设输入元素均匀而独立的分布在区间[0,1)上;
* 桶排序的核心思想是,将[0,1)分为n个大小相同的子区间,
* 上一个区间里的元素都比下一个区间里的...
分类:
编程语言 时间:
2015-05-19 22:49:02
阅读次数:
167
基数排序_RADIXSORT
基数排序的思想
基数排序算法实现
基于计数排序的基数排序
基于最优桶排序的基数排序
基数排序_RADIXSORT基数排序是一种基于计数排序_COUNTINGSORT或者是最优桶排序(当然也可以基于其他排序算法,只不过计数排序对于基数排序来说应该是最快的了,因为二者的拼音都是jishupaixu,哈哈)的一种可以在线性时间O(n)O(n)完成的排序算法。博主在做基数排序的...
分类:
编程语言 时间:
2015-05-19 19:07:15
阅读次数:
215
给定一个包含红,白,蓝且长度为n的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。
我们可以使用整数0,1和2分别代表红,白,蓝。
样例
注意
不能使用代码库中的排序函数来解决这个问题
说明
一个相当直接的解决方案是使用计数排序扫描2遍的算法。
首先,迭代数组计算0,1,2出现的次数,然后依次用0,1,2出现的次数去覆盖数组。
...
分类:
其他好文 时间:
2015-05-18 10:52:52
阅读次数:
147
1 void countingSort(array &a, int k) //a中皆为整数,范围为0到K-1 2 { 3 array c(k, 0); 4 for (int i = 0; i b(a.length); 9 for (int i = a.length-1; ...
分类:
编程语言 时间:
2015-05-16 23:08:56
阅读次数:
186
计数排序_COUNTINGSORT我们之前讲过四种基本的排序方法:《快速排序_QUICKSORT》:http://blog.csdn.net/ii1245712564/article/details/45749061
《堆排序_HEAPOSRT》http://blog.csdn.net/ii1245712564/article/details/45534625
《归并排序_MERGESORT》:...
分类:
编程语言 时间:
2015-05-16 16:37:43
阅读次数:
299