在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下: .....
分类:
编程语言 时间:
2015-05-24 20:20:34
阅读次数:
138
任意一种比较排序算法,在最坏情况下的运行时间下限是Ω(nlgn)计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,k为某个整数,当k=O(n)时,计数排序的运行时间为Θ(n) 1 //输入数组A[1..n],存放排序结果数组B[1..n],临时存储区C[0..k] 2 COUNTING-S...
分类:
编程语言 时间:
2015-05-24 17:18:52
阅读次数:
135
线性时间排序
1.计数排序
2.基数排序
3.桶排序...
分类:
编程语言 时间:
2015-04-14 19:42:38
阅读次数:
249
1.计数排序基本思想:对于每一个输入元素x,确定小于(或等于)x的元素个数,就可以确定x的存放位置.特点:稳定排序#include#includeusing namespace std;void count_sort(vector A,vector &B,int k){ vector C(k+...
分类:
编程语言 时间:
2015-03-18 20:08:43
阅读次数:
249
前面我们学习的几种排序算法都是基于比较的,对于任何输入数据他们都是适用的,其最坏的时间复杂度不会低于nlgn;
但对于一些比较特殊的输入数据,我们可以不采取比较的方法而是采用其它的方法对其进行排序,以达到线性的时间复杂度。下面就来介绍三种这样的算法:计数排序,基数排序,桶排序(因为这几种算法不常见,我只实现了计数排序,其它两种排序用伪代码表示)。一.计数排序
算法思想:给定n个位于0–k之...
分类:
编程语言 时间:
2015-03-13 18:46:59
阅读次数:
170
之前所学的排序都是基于比较的,通过两数的比较得出数的大小顺序,基于比较的算法最优的时间复杂度为n*lg(n)。而计数排序采用了另一种方式,没有比较,让人眼前一亮。但需要特定的环境下才能行。比如输入数组需要是0~k之间的整数。但他至少让排序能在线性时间O(n)内完成。基数排序弥补了计数排序排列大数时需...
分类:
编程语言 时间:
2015-01-31 07:05:59
阅读次数:
213
Sorting In Linear Time
之前尝试过很多的排序算法, 都是基于比较的排序算法(base on comparing)
Collection of algorithm for sorting (part one)
http://blog.csdn.net/cinmyheart/article/details/39268783
Collection...
分类:
编程语言 时间:
2015-01-11 17:49:12
阅读次数:
295
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!...
分类:
编程语言 时间:
2014-12-24 16:24:00
阅读次数:
229
摘要: 本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较....
分类:
编程语言 时间:
2014-11-03 14:15:19
阅读次数:
301
计数排序(Counting sort)是一种稳定的线性时间排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据.....
分类:
编程语言 时间:
2014-10-28 19:35:34
阅读次数:
218