一,计数排序计数排序[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
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
分类:
编程语言 时间:
2015-01-18 22:29:37
阅读次数:
220
计数排序的关键就在于如何处理每个元素的最终位置。在计数排序中,我们可以通过维护一个数组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
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
基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。实现多关键字排序通常有两种作法: 最低位优先法(LSD) 先对K[0]{基数的最低位}进行排序,并按 K(0) 的不同值将记录序列分成若干子序列之后,分别对 K[1] 进行排序,..., K[d-1]依次类推,直至最后对最次位关键字排序完成为止。 最高位优先法(MSD) 先对 K[d-1]{基数的最高位...
分类:
编程语言 时间:
2015-01-11 10:59:26
阅读次数:
305
稳定性:
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,
冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
复杂度
冒泡法: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。不说了。
直接插入排序:O(n*n)
希尔排序:算法的复杂度为n的1.2次幂
选择排序:O(n*n)
快速排序:不稳定,平均时间复杂度O(nlog...
分类:
编程语言 时间:
2015-01-10 01:09:47
阅读次数:
222
基数排序:时间O(d(n+rd)) d:关键字个数,n:元素数,rd:关键字的取值范围
空间O(rd)
注:对于数值类排序,只能从低位到高位进行基数排序,能有序,(高到低,不行)
void RadixSort(int *&p,int r,int d)//p为带排序的单链表指针,r为基数,d为关键字位数
{
int *head[MAXR],*tail[MAXR],*t;
in...
分类:
编程语言 时间:
2015-01-06 18:05:39
阅读次数:
143
#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
1、基数排序数据:5 45 81 27 61 91 93 42 28 36step1:建0~9 的空队列step2:按个位数放入 取出取出后:81 61 91 42 93 5 45 36 27 28step3:按十位数放入 取出取出后:5 27 28 36 45 61 81 91 93排序完毕2、堆...
分类:
编程语言 时间:
2014-12-28 01:46:00
阅读次数:
208
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!...
分类:
编程语言 时间:
2014-12-24 16:24:00
阅读次数:
229