计数排序 是 线性时间的 排序算法,时间复杂度为O(n),虽然有一定的局限性。但是还是很好的一种算法。用2个数组进行额外的存储信息,数组 c[ ] 是对 数据中值相同的 记录下来,以便后面查阅;b[ ]是输出的有序数组,再将有序的数组输出。...
分类:
编程语言 时间:
2015-01-22 15:39:48
阅读次数:
187
一,计数排序计数排序[cpp]view plaincopy#includevoidCOUNTINGSORT(int*A,int*B,intarray_size,intk){intC[k+1],i,value,pos;for(i=0;i=0;i--){value=A[i];pos=C[value];B...
分类:
编程语言 时间:
2015-01-20 21:46:30
阅读次数:
154
计数排序的关键就在于如何处理每个元素的最终位置。在计数排序中,我们可以通过维护一个数组C[i]来记录键值为i的元素所属的位置。每次输入一个A[i],首先记录每个A[i]出现的次数C[i],然后从前向后C[i]=C[i-1]+C[i],这样可以得出值为i所在排序后新数组中的最后一个重复数的位置。计数排序的一个显然问题就是C[]数组的大小确定的问题。下面贴上我自己理解写出的代码。
#include
...
分类:
编程语言 时间:
2015-01-13 00:09:55
阅读次数:
222
#include
#include
#include
using namespace std;
#define MAXN 123123
char s[MAXN];
int sa[MAXN],t[MAXN],t2[MAXN],c[MAXN],n;
void build(int m)
{
int i,*x=t,*y=t2;
//其实下面的是计数排序
f...
分类:
编程语言 时间:
2014-12-31 10:04:05
阅读次数:
184
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!...
分类:
编程语言 时间:
2014-12-24 16:24:00
阅读次数:
229
经典排序算法 - 计数排序Counting sort
注意与基数排序区分,这是两个不同的排序
计数排序的过程类似小学选班干部的过程,如某某人10票,作者9票,那某某人是班长,作者是副班长
大体分两部分,第一部分是拉选票和投票,第二部分是根据你的票数入桶
看下具体的过程,一共需要三个数组,分别是待排数组,票箱数组,和桶数组
var unsorted = new int[] { 6, 2, ...
分类:
编程语言 时间:
2014-12-16 13:34:36
阅读次数:
165
经典排序算法 - Cycle Sort
Cycle sort的思想与计数排序太像了,理解了基数排序再看这个会有很大的帮助,
圈排序与计数排序的区别在于圈排序只给那些需要计数的数字计数,先看完文章吧,看完再回来理解这一句话
所谓的圈的定义,我只能想到用例子来说明,实在不好描述
待排数组[ 6 2 4 1 5 9 ]
排完序后[ 1 2 4 5 6 9 ]
数组索引[ 0 1 2 3 4 ...
分类:
编程语言 时间:
2014-12-16 13:30:35
阅读次数:
219
1、计数排序如果给定上下界,并且区间不大的话,最适用。比如对于英文字母数组进行排序。时间复杂度O(n),空间复杂度O(n)void countSort(int A[], int n, int low, int high){ int size = high-low+1; vector co...
分类:
编程语言 时间:
2014-12-08 21:13:50
阅读次数:
225
#include//不能有相同数字int main(){ int a[100],b[100],c[100]; int n; scanf("%d",&n); for(int i=0;ia[j]) b[i]++; for(i=0;i<n;i++...
分类:
编程语言 时间:
2014-11-28 14:12:54
阅读次数:
146