文档介绍:学号
2015-2016学年 第一学期
1308210102
《数据结构》
课程设计报告
题目:
车牌管理系统
专业:
计算机科学与技术
班级:
13计科2班
姓名:
蔡霖
指导教师:
邓明
成绩:
计算,车牌号是由汉字,字母以和数字组成,若直接进行排序,则需要分成34组,为了提高算法的空间性能,可以将汉字和字母转换为十进制数后再进行基数排序。
例如:一组记录的关键字为:(278,109,63,930,589,184,505,269,8,83)
可以看出,这组关键字与以前说过的用来排序的关键字并无差别,且也是针对但关键字对一组记录进行排序。但在基数排序中,我们可以将单关键字看成由若干个关键字复合而成。
上述这组关键字的值都在0~999的范围内,我们可以把一个数位上的十进制数字看成是一个关键字,即将关键字K看成由3个关键K0,K1,K2组成。其中,K0是百位上的数字,K1是十位上的数字,K2是个位上的数字。
因为十进制的基数是10,所以,每个苏伟山的数字都可能是0~9中的任何一个。我们先将关键字K2来分配所有参与排序的元素,将K2=0的元素防在一组、K2=1的元素放在一组、 ……、K2=9的元素放在一组。这样,将上述一组元素分成10组,如下(a)图所示。然后,再将K2的值由0到9的顺序收集各组元素,形成序列(930,063,083,184,505,278,008,109,589,269)。
对上述序列中的元素再按关键字K1来分配,也分成10组,如下(b)图所示。然后,再按K1的值由0到9的顺序收集各组元素,形成序列(505,008,109,930,063,269,278,083,184,589)。
对该序列中的元素再按关键字K0来分配,分成如下(c)图所示的10组。然后按K0的值由0~9的顺序收集各组元素,形成序列(008,063,083,109,184,267,278,505,589,930)。这时,该序列已经变成了一个有序序列。
一趟分配前的一组元素(008,063,083,109,184,267,278,505,589,930)
269
083 008 589
930 063 184 505 278 109
k2=0 k2=1 k2=2 k2=3 k2=4 k2=5 k2=6 k2=7 k2=8 k2=9
(a)、按个位数大小将元素分成10组
一趟分配后的一组元素(930,063,083,184,505,278,008,109,589,269)
109 589
008 269 184
505 930 063 278 083
K1=0 k1=1 k1=2 k1=3 k1=4 k1=5 k1=6 k1=7 k1=8 k1=9
(b)、按十位数大小将元素分成10组
二趟收集后的元素序列(505,008,109,930,063,269,278,083,184,589)
083
063 184 278 589
008 109 269 505 930
K0=0 k0=1 k0=2 k0=3 k0=4 k0=5 k0=6 k0=7 k0=8 k0=9
(c)、按百位数大小将元素分成10组
三趟收