一些常用的排序算法

五、      基数排序( Radix Sort 

前面几种排序中我尽量不去区别“关键字”和“记录”的概念,这里不得不区分了,因为这是一类基于多个关键字对应于一个记录的排序方法。

5 . 多关键字排序

假设有n的记录 { R1, R2, ... Rn},其中每个记录又含有d个关键字 (K 0 , K 1 , ... K d-1 ) ,其中关键字优先级逐次降低:

第一种方法 :先对主关键字K 0 排序,将序列划分成若干子序列,每个子序列中都有相同的K 0 值,然后对每个子序列对 关键字K 1 排序,分成更小的若干子序列,依次重复至 对每个子序列对 关键字K d-1 排序, 然后将所有子序列联接成一个有序序列。

第二种方法 :与上相反, 依次以K d-1 ,K d-2 ... K 0 排序.

5 . 链式基数排序

基本思想: 有的逻辑关键字可以看成有若干个关键字复合而成,这是一种借助“分配”和“收集”两种操作对单逻辑关键字进行的一种内部排序。

举例:对一组数字(最大数为3位数, 不满3位的前面置0)排序,首先以静态链表存储n个待排记录,并令表头指针指向第一个记录;第一趟分配以个位数进行分成10个链队列(01...9),第一趟收集是改变所有的非空队列的队尾记录的指针域,令其指向下一个非空队列的队头记录,重新将10个队列中记录链成一个链表;接着第二趟分配和收集针对十位数....直到第三趟的分配和收集结束。

总结:

排序方法

平均时间

最坏情况

辅助存储

简单排序

O ( n2 

O ( n2 

O ( 1 

快速排序

O ( n logn 

O ( n2 

O ( logn 

堆排序

O ( n logn 

O ( n logn 

O ( 1 

归并排序

O ( n logn 

O ( n logn 

O ( n 

基数排序

O ( d ( n + rd))

O ( d ( n + rd 

O ( rd 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值