●计数排序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
数据结构中的排序算法分为比较排序,非比较排序。比较排序有插入排序、选择排序、交换排序、归并排序,非比较排序有计数排序、基数排序。下面是排序的具体分类:1.直接排序主要思想:使用两个指针,让一个指针从开始,另一个指针指向前一个指针的+1位置,两个数据进行比较voidI..
分类:
编程语言 时间:
2016-05-22 18:39:26
阅读次数:
282
基数排序与基数排序是两种非比较型排序。计数排序:
//************计数排序*********
//先最大-最小+1得到开辟空间数,开辟空间str,在遍历原数据arr在str相应位置计数,再遍历str将值写到原arr中
//适用在密集型数据,无重复最优可转化为位图
//时间复杂度O(N),空间复杂度O(..
分类:
编程语言 时间:
2016-05-22 18:37:27
阅读次数:
248
在前面几章中,分别介绍过冒泡排序,插入排序,选择排序以及归并排序。而在介绍散列技术时,也曾介绍过桶排序、计数排序以及奇数排序。在讨论优先级队列时,也结合堆这种结构介绍过堆排序以及更为通用的锦标赛排序。这一章将学习若干种更高级的排序算法并讨论与之相关的几个衍生问题。...
分类:
编程语言 时间:
2016-05-20 06:18:48
阅读次数:
336
一. 题目 487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 274040 Accepted: 48891 Description Businesses like to have memorable telepho ...
分类:
编程语言 时间:
2016-05-18 23:30:47
阅读次数:
286
JAVA当中有以下几种常见排序算法:插入排序(直接插入排序、链表插入排序、分段/二分/折半插入排序、希尔排序/缩小增量排序)、冒泡排序、快速排序、简单选择排序、归并排序、二叉树排序、基数排序等。
(1)复杂度比较
表1 几种常见排序算法的复杂度
算法名称
平均情况
最好情况
最坏情况
辅助空间
直接...
分类:
编程语言 时间:
2016-05-18 19:48:41
阅读次数:
240
上一节的冒泡排序可以说是我们学习的第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1 亿个数进行排序,桶排序只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人?那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢?...
分类:
编程语言 时间:
2016-05-18 18:27:04
阅读次数:
251