没有合适的资源?快使用搜索试试~ 我知道了~
超快速排序算法
资源推荐
资源详情
资源评论
计算机工程与应用
2006.29
1
引言
排序(
Sorting
) , 就是 将 数据 元 素( 或记 录 ) 的一个 任 意序
列, 重新排列成一个按关键字有序的序列。由于排序是计算机
科学中一项复杂而重要的技术
, 无论在系统软件还是在应用软
件中使用频率都很高, 因此许多专家、学者对排序问题进行了
深入的探讨
, 给出了许多时间复杂度仅为
O
(
N
) 的高效排序方
法
[1~5]
。基数排序是典型的时间复杂度仅为
O
(
N
) 的算法之一,
但其算法结构较复杂, 对于一些特殊数据要占用大量额外内
存, 故使用频率并不高。快速排序算法采用分治原则, 算法结构
简单
, 平均性能较佳为
O
(
NlogN
) , 因而被广泛使用。但快速排
序算法, 在数据部分相等或有序时, 时间复杂度最坏为
O
(
N
2
) 。
侧重速度稳定排序算法的时候
, 往往使用归并排序或堆排序。
结合快速排序的分治算法结构和基数排序的原则, 本文提
出超快速排序算法。新算法保留了快速排序算法结构的简洁
性
, 同时速度稳定且优于快速排序算法和基数排序算法。
2
算法描述与分析
我们首先讨论无符号整数的排序。
关于十进制整数的基数排序
, 假设所有数据的最高位数为
m
, 则先根据最高位(
m
位) 的数字将数据分成
10
个小组; 对于
每个小组的数据
, 根据次高位(
m- 1
位) 的数字将数据分成
10
个小组; 等等, 依此类推, 最后根据个位(
1
位) 的数字将数据分
成
10
个小组, 依此收集各个小组的数据, 便将数据排序。其算
法结构较复杂, 对于一些特殊数据要占用大量额外内存。
二进制整数的基数排序是一个非常特殊的情形, 因为只有
两个数字
0
和
1
, 故每次将数据分成
2
个小组。假设所有数据
属于
[0
,
2
m+1
- 1]
,
m
为一整数, 则先根据最高位(
m
位) 的数字将
数据分成
2
个小组, 分别属于
[0
,
2
m
- 1]
和
[2
m
,
2
m+1
- 1]
; 根据次高
位(
m- 1
位) 的数字将
[0
,
2
m
- 1]
的数据分成
2
个小组, 分别属于
[0
,
2
m- 1
- 1]
和
[2
m- 1
,
2
m
- 1]
, 将
[2
m
,
2
m+1
- 1]
的数据分成
2
个小组, 分
别属于
[2
m
,
2
m
+2
m-1
- 1]
和
[2
m
+2
m- 1
,
2
m+1
- 1]
; 等等, 这完全类似于快
速排 序 的分 治 算法 结 构, 因而 可 以类 似 于快 速 排序 实 现 该
算法。
下面的算法
1
是递归形式的超快速排序算法, 。
算法
1
超快速排序
设待排序数据存储于数组
a[]
, 下标范围为从
low
到
high
,
所有数据小于
2
m+1
, 令
k=2
m
。
bq_sort
(
int *a
,
int low
,
int high
,
int k
)
{
int i
,
j
;
int x
;
/ / x
为临时变量
i=low
;
j=high
;
while
(
i<j
)
{
while
(
a[j]&k && i<j
)
j- -
;
while
( (
a[i]&k
)
==0 && i<j
)
i++
;
if
(
i<j
)
{
x=a[j]
;
a[j]=a[i]
;
a[i]=x
;
}
else
{
if
(
a[j]&k
)
i- -
;
else j++
;
超快速排序算法
周建钦
( 安徽工业大学计算机学院, 安徽马鞍山
243002
)
摘 要 快速排序算法结构简单, 平均性能较佳; 基数排序性能较稳定。结合快速排序和基数排序, 提出超快速排序算
法, 通过理论分析和实验表明, 新算法的性能优于快速排序算法和基数排序算法。
关键词 排序 算法 快速排序 基数排序 超快速排序
文章编号
1002- 8331
(
2006
)
29- 0041- 02
文献标识码
A
中图分类号
TP251
Super Quick Sort Algorithm
ZHOU Jian- qin
(
Department of Computer Science
,
Anhui University of Technology
,
Ma
’
anshan
,
Anhui 243002
)
Abstract
:
Sorting algorithms have been widely studied in both theory and algorithm design.A new practical
“
in- place
”
sorting algorithm
,
called super quick sort
,
is obtained by merging some characteristics of radix sort and quick sort.Both
theoretical analysis and experimental tests confirm the merits of super quick sort.The time complexity and space com-
plexity of the new algorithm is much better than that of both radix sort and quick sort.
Keywords
:
sort
,
algorithm
,
quick sort
,
radix sort
,
super quick sort
基金项目: 国家自然科学基金资助项目( 编号:
60473142
)
作者简介: 周建钦(
1963-
) , 男, 教授, 研究方向为: 理论计算机科学, 算法和组合数学。
41
资源评论
TonyBringwater
- 粉丝: 21
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功