算法说明计数排序属于线性排序,它的时间复杂度远远大于常用的比较排序。(计数是O(n),而比较排序不会超过O(nlog2nJ))。其实计数排序大部分很好理解的,唯一理解起来很蛋疼的是为了保证算法稳定性而做的数据累加,大家听我说说就知道了:1、首先,先取出要排序数组的最大值,假如我们的数组是int[] ...
分类:
编程语言 时间:
2015-03-19 07:44:21
阅读次数:
190
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
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插...
分类:
编程语言 时间:
2015-03-17 23:13:00
阅读次数:
215
中位数即是排过序后的处于数组最中间的元素。 不考虑数组长度为偶数的情况。设集合元素个数为n。简单的想了下:思路1) 把无序数组排好序,取出中间的元素 时间复杂度 采用普通的比较排序法O(N*logN) 如果采用非比较的计数排序等方法, 时间复杂度 O(N), 空间复杂度也是O(N).思路2) 2.1...
分类:
编程语言 时间:
2015-03-17 21:34:15
阅读次数:
185
后缀数组的两篇神论文:
国家集训队2004论文集 许智磊
算法合集之《后缀数组——处理字符串的有力工具》
很多人的模版都是用论文上的
包括kuangbin的模版:(DA算法)
模版中比较难理解的地方有两点1.按关键词排序 2.把字符串长度增加一位
按关键词排序的意思其实是基数排序中相当把两位数排序时先排个位,再排十位
这里也一样先排后2^k...
分类:
编程语言 时间:
2015-03-17 18:05:56
阅读次数:
185
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参...
分类:
编程语言 时间:
2015-03-16 08:38:00
阅读次数:
264
基数排序是一种适用于特定数据类型的内部排序算法。这种排序算法要求数据必须能够划分为多个排序关键字,且这些排序关键字应该有优先级的区别。比如某个序列的数据都是整数,且取值范围在[0,99],则我们可以划分出...
分类:
编程语言 时间:
2015-03-15 16:59:22
阅读次数:
144
一.什么是基数排序我们以前接触的很多算法,都是通过比较的得出的,但基数排序是另一种思路。原理类似桶排序,这里总是需要10个桶,多次使用首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数例如待排序数组[62,14,59,88,16]简单点五个数字,分配10个桶,桶编号...
分类:
编程语言 时间:
2015-03-15 16:30:09
阅读次数:
158
前面我们学习的几种排序算法都是基于比较的,对于任何输入数据他们都是适用的,其最坏的时间复杂度不会低于nlgn;
但对于一些比较特殊的输入数据,我们可以不采取比较的方法而是采用其它的方法对其进行排序,以达到线性的时间复杂度。下面就来介绍三种这样的算法:计数排序,基数排序,桶排序(因为这几种算法不常见,我只实现了计数排序,其它两种排序用伪代码表示)。一.计数排序
算法思想:给定n个位于0–k之...
分类:
编程语言 时间:
2015-03-13 18:46:59
阅读次数:
170
要点基数排序又称桶排序。基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。 不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为: R {50, 123, 543, ...
分类:
编程语言 时间:
2015-03-09 17:31:28
阅读次数:
135