voidCountSort(int*a,intn)
{
assert(a);
intminValue=a[0];
intmaxValue=a[0];
for(inti=0;i<n;++i)
{
if(minValue>a[i])
{
minValue=a[i];
}
if(maxValue<a[i])
{
maxValue=a[i];
}
}
intrange=maxValue-minValue+1;
int*tmp=newint[r..
分类:
编程语言 时间:
2016-06-12 16:59:51
阅读次数:
273
排序算法可谓数据结构模块中的重中之重,常见的哈希表,二叉树,搜索树/平衡树,位图等数据结构只是处理实际问题的抽象方法,实际在处理接受或生成的数据集时,排序算法显得尤其重要,排序算法家族很庞大,其中包括了冒泡排序,选择排序,插入排序,堆排序,快速排序,归并排序,基数排序,计数排序,希尔排序,箱排序,树型排序等众多算法,每种排序都有各自的特性,没有好坏之分,只有在特定的场景使用合适的排序算法才是上策,单纯的来比显得太过绝对,没有可比性。因为实际需求及各方面条件的限制使得排序算法的可选范围往往只缩小到某一种或某几...
分类:
编程语言 时间:
2016-06-07 06:37:23
阅读次数:
291
计数排序:最差运行时间复杂度:,平均:,k是数字范围区间长度,n是数组长度。 这是一种稳定的线性时间排序 如果要排序的内容已知其范围,比如要排序的所有数字都是1~100之间的数(使用计数排序是最好的选择) KEY-IDEA:由于计数的范围已经确定,因此,可以开辟一个额外的空间来记录所有数字出现的次数 ...
分类:
编程语言 时间:
2016-06-05 18:56:32
阅读次数:
263
排序算法有很多种,大家最先想到的大多是基于比较的排序吧,像冒泡排序、选择排序、插入排序都属此类。这些都是很容易想到的算法,它们的思想简单。但都有个缺点,就是比较慢,时间复杂度从O(n2)到O(Nlog(N))不等,在数据量小的时候还好,但应付大数据时就心有余而力不足了。 那有没有更快的算法呢?答案是 ...
分类:
编程语言 时间:
2016-06-04 21:59:29
阅读次数:
237
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。(如果..
分类:
编程语言 时间:
2016-05-26 11:45:24
阅读次数:
281
计数排序计数排序的原理设被排序的数组为A,排序后存储到B,C为临时数组。所谓计数,首先是通过一个数组C[i]计算大小等于i的元素个数,此过程只需要一次循环遍历就可以;在此基础上,计算小于或者等于i的元素个数,也是一重循环就完成。下一步是关键:逆序循环,从length[A]到1..
分类:
编程语言 时间:
2016-05-24 19:18:17
阅读次数:
229
●计数排序1、算法思想:计数排序是直接定址法的变形。通过开辟一定大小的空间,统计相同数据出现的次数,然后回写到原序列中。2、步骤:1)找到序列中的最大和最小数据,确定开辟的空间大校2)开辟空间,利用开辟的空间存放各数据的个数。3)将排好序的序列回写到原序列中。具..
分类:
编程语言 时间:
2016-05-23 22:49:25
阅读次数:
244
计数排序: 桶排序:www.roading.org/algorithm/introductiontoalgorithm 算法模型: 1,桶排序假设待排的一组数统一分布在一个范围[m....n],将这一范围划分为几个子范围,也就是桶bucket。 例如,如何将0 999范围的数,划分到10个桶中?范围 ...
分类:
编程语言 时间:
2016-05-23 21:07:34
阅读次数:
215
计数排序:#define_CRT_SECURE_NO_WARNINGS1
#include<iostream>
usingnamespacestd;
#include<assert.h>
#include<vector>
voidPrint(vector<int>a)
{
for(inti=0;i<a.size();i++)
{
cout<<a[i]<<"";
}
cout<<endl;
}
voidC..
分类:
编程语言 时间:
2016-05-23 19:36:09
阅读次数:
260
在上一篇博客中,主要是实现各种的排序算法,并针对一些算法进行了优化的处理,下面主要讨论一下非比较排序的算法(计数排序、基数排序),同时并对各种排序算法的性能、时间复杂度、空间复杂度、优缺点、以及适用场景做总结分析。1.计数排序主要思想:主要是需要统计次数,使..
分类:
编程语言 时间:
2016-05-23 19:34:01
阅读次数:
230