数据结构之排序总结

排序是把一个记录(在排序中把数据元素称为记录)集合或序列重新排列成按记录的某个数据项值递增(或递减)的序列。

 

作为排序依据的数据项称为“排序项”,也称为记录的关键码(Keyword)。关键码分为主关键码(Primary Keyword)和次关键码(Secondary Keyword)。一般地,若关键码是主关键码,则对于任意待排序的序列,经排序后得到的结果是唯一的;若关键码是次关键码,排序的结果不一定唯一,这是因为待排序的序列中可能存在具有相同关键码值的记录。此时,这些记录在排序结果中,它们之间的位置关系与排序前不一定保持一致。如果使用某个排序方法对任意的记录序列按关键码进行排序,相同关键码值的记录之间的位置关系与排序前一致,则称此排序方法是稳定的;如果不一致,则称此排序方法是不稳定的。

 

直接插入排序(direct Insert Sort)的基本思想是:顺序地将待排序的记录按其关键码的大小插入到已排序的记录子序列的适当位置。子序列的记录个数从1开始逐渐增大,当子序列的记录个数与顺序表中的记录个数相同时排序完毕。

 

这个方法很类似于上学的时候排座位,老师叫一名最低的学生,坐第一排第一桌,然后依次叫。。。。。这个关键码就是学生的身高,它是在整个群体中,视关键码而定。

 

下面给出一个实例,例如对数组 {32,12,54,32,15} 进行排序。首先将第一个元素,也就是32,看作是一个有序的序列。可以这样表示 {32|12,54,32,15} (里面那个竖线分割了有序序列和待排序的数组)。接下来,取待排序数组中的第一个元素,也就是12,因为它比32小,所以将它放到32的前面,于是有这样的表示 {12,32|54,32,15}。基本过程就是这样,如此反复下去,知道待排序数组中的数据,都插入到有序序列的合适位置,排序就完成了。

对上面那个例子排序的全过程如下:

{32,12,54,32,15} => {32|12,54,32,15} => {12,32|54,32,15}=>{12,32,54|32,15} => {12,32,32,54|15} => {12,15,32,32,54}

 

待续

posted @ 2010-10-16 05:59  慧实  阅读(284)  评论(0编辑  收藏  举报