上一篇提到了计数排序,它在输入序列元素的取值范围较小时,表现不俗。但是,现实生活中不总是满足这个条件,比如最大整形数据可以达到231-1,这样就存在2个问题:1)因为m的值很大,不再满足m=O(n),计数排序的时间复杂也就不再是线性的;2)当m很大时,为计数数组申请的内存空间会很大;为解决这两个问题...
分类:
编程语言 时间:
2015-07-12 00:09:55
阅读次数:
336
本学习笔记部分内容来自浙江大学网易云课堂,谢谢!
1、表排序
定义一个指针数组做为表。排序的时候,数组位置上的数值不变,改变的是指针的指向。
如该图,初始数值:f d c a g b h e 开始时,比较f>d,则指针0指向d,指针1指向f。之后比较f>c,d>c,则指针0指向c,指针1指向d,指针2指向f。以此类推,最终指针0指向a的位置(即table[0]=3,A[3]那个位...
分类:
编程语言 时间:
2015-07-10 18:59:48
阅读次数:
189
【基数排序的思想】首先使用基数r=10进行分解,将每个整数分成d位(d是待排元素中的最大位数),每位的取值范围是0~9;因为每一位有10种可能的情况,所以建立10个链表,即lists[0]~list[9],分别代表相应位为0、1、2、3、4、5、6、7、8、9。...
分类:
编程语言 时间:
2015-07-04 11:18:31
阅读次数:
174
1.时间复杂度
时间复杂度为O(n^2)的排序算法:插入排序、冒泡排序、选择排序
时间复杂度为O(nlogn)的排序算法:堆排序、归并排序、快速排序
希尔排序介于这两者之间
2.算法稳定性
稳定的排序算法:插入排序、冒泡排序、归并排序和基数排序
不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序...
分类:
编程语言 时间:
2015-06-30 00:13:26
阅读次数:
149
基数排序①简介 基数排序是一种用在卡片排序机上的算法,一张卡片有80列,在每一列上机器可以选择在12个位置中的任意一处穿孔。通过机器的操作,能够“编程”来检查每个卡片中的给定列,然后根据穿孔的位置将他们分别放在12个容器中。操作员就可以挨个容器来收集卡片,其中第一个位置穿孔的卡片在最上面,以此类推。②原理 直观上来看,可能会认为应该先按照最高有效位进行排序并分装到不同的容器中,再对每个容...
分类:
编程语言 时间:
2015-06-29 17:50:24
阅读次数:
146
介绍: (radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O....
分类:
编程语言 时间:
2015-06-28 23:00:12
阅读次数:
282
算法描述:首先从最低位即个位开始排序03132233332401234这是第一趟排序后的桶,个人认为,第一趟,如有322和422,那么就得人为的把422放在322上面,因为在做后趟时,我发现得从下往上的去填桶4223222第二趟,第一行,从左往右,按次最低位,即十位来填桶32433303223101...
分类:
编程语言 时间:
2015-06-28 18:48:32
阅读次数:
118
在此对于桶排序做出两种方法:
一.简化版桶排序
代码如下:
/*简化版的桶排序*/
#include
int main()
{
int book[1001],i,j,t,n;
for(i=0;i<=1000;i++)
{
book[i]=0;
}
scanf("%d",&n);//输入一个数n,表示接下来有n个数
for(i=1;i<=n;i++)//循环读入n个数,并进...
分类:
编程语言 时间:
2015-06-26 09:16:59
阅读次数:
130
数据结构排序算法总结这章的内容比较经典,都是一些很好的算法,将来很可能会用得到,总结一下,加深一下印象。文章篇幅有点大。 一:插入排序 1)直接插入排序 2)折半插入排序3)希尔排序二、交换排序1)冒泡排序 2)快速排序三、选择排序1)简单选择排序 2)堆排序 四、归并排序五、基数排序一、插入排序....
分类:
编程语言 时间:
2015-06-22 21:58:51
阅读次数:
250
基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。实现的过程不需要之前的所有排序所需要的记录关键字比较,移动等操作。
多关键字排序:
多关键字排序通常有两种方法:
1、MSD(Most Significant Digit)法,最高为优先法
2、LSD(Least Significant Digit)法,最低位优先法过程借助分配,收集两种操作。数组基数排序:过程演示:第一步...
分类:
编程语言 时间:
2015-06-21 09:30:28
阅读次数:
197