收稿日期 : 2008-06-25
基金项目 :陕西省自然科学基础研究计划(编号 :
SJ
08
F
24)
作者简介 :谢勰(1981-) ,男 ,硕士研究生 ,主要从事算法设计与分析研究 .
文章编号 :1673-064
X
(2008)06-0100-04
低熵多键排序问题的实用算法
Pra ctical algorithm for lo w
-
entropy multi
-
key sorting
谢勰
1,2
,方明
1
(1 .西安石油大学 计算机学院 ,陕西 西安 710065 ;2 .西安邮电学院 信息与控制系 ,陕西 西安 710061)
摘要 :给出低熵情况下的多键排序改进算法 .利用众数投票算法结合中位数选择算法产生枢纽元 ,
对与枢纽元相等的元素使用改进算法 ,其他元素仍采用原算法 .理论分析表明 ,重复数据较多时改
进算法速度较快 ,且在数据量不大时其性能接近线性算法 .
关键词 :熵 ;多键排序算法 ;众数投票算法 ;选择算法
中图分类号 :
TP
301 .6 文献标识码 :
A
排序是计算机科学中的一个基础问题 ,在实际
中有着相当丰富的应用 ,对其研究也非常深入
[1]
.
多键排序问题是一种特殊的排序问题 ,其特色是待
排序的元素之间的序关系判断较复杂 ,即难以立即
给出元素之间的序关系 .但多键排序在数据库、数据
挖掘、机器学习等众多领域都有广泛的应用 ,因此提
升多键排序算法的性能意义重大 .
若存在
n
个待排序的元素 ,且每个元素均有
k
个关键字 ,对这些元素进行排序称为多键排序问
题
[2]
.多键快速排序
[3]
(
Mu ltikey Quicksort
)是一种
较快的算法 ,在平均情况下的时间复杂度为
O
(
n
(
k
+
log n
)) .而在实际问题中 ,有时元素的分布存在较
多相似性 ,若用多键快速排序则要进行大量的无用
操作 .此外 ,从熵的角度看 ,这些元素组成的集合的
熵较低 ,必须根据此特征进行改进 .本文提出一种解
决此类问题的实用算法 ,既具备较快的速度 ,还具有
相当好的可操作性 .
1 多键快速排序
记
n
个待排序元素为
V
={
V
0 ,
V
1 ,… ,
V
n
-1},
对于其中任一元素
V
i
(0≤
i
<
n
) ,皆拥有
k
个关键
字
V
i
(0)
,
V
i
(1)
,… ,
V
i
(
k
-1)
.文献[3] 给出了多键快
速排序算法 ,描述如下 :
算法 1
MultiQsort
Mu ltiQs ort
(
V
,
l
,
r
,
d
)
if
(
d
<
k
)
and
(
l
<
r
)
then
选择枢纽元
pi v ot
(
eLe ft
,
eR ight
)←
Partition
(
V
,
pivot
,
l
,
r
,
d
)
MultiQ s ort
(
V
,
l
,
eLeft
-1,
d
)
MultiQ s ort
(
V
,
eLeft
,
eR ight
,
d
+1)
MultiQ s ort
(
V
,
eRight
+1,
r
,
d
)
end if
end MultiQsort
MultiQ s ort
算法中使用了 3 路划分 ,即
Partiti o n
函数 ,它可描述如下
[4]
:
算法 2
Partiti on
Partition
(
V
,
pi v ot
,
L
,
R
,
d
)
(
l
,
ll
,
r
,
rr
,
co mplete
)←(
L
,
L
,
R
,
R
,
fa lse
)
while
(!
co mplete
)
do
while
(
l
<
r
)
and
(
V
l
(
d
)
≤
pi vot
)
do
if
(
V
l
(
d
)
=
pivot
)
then
2008 年 11 月
第23卷第6期
西安石油大学学报(自然科学版)
Journal of Xi
′
an Shiyo u Uni v ersity
(
Nat u ral Science Edition
)
Nov
.2008
Vol
.2 3
No
.6