Fork me on GitHub

数据结构---排序(3)

四、选择排序

4.1直接选择排序

思路:选择n个元素中最小的数据元素交换,放在第一个记录上。

步骤:1.外层循环记录有序区的第一位置。

        2.内层循环在无序区找到最小元素,并执行交换操作。

描述:

设计:

Code

 

4.2堆排序

书上说学习树那一章才有。我也看完树再补吧。

(时间到了4.15日,可以补上这部分了)

将堆序列理解成,二叉树中,任意一个节点的关键字值都小于或等于它的子女节点的关键值。由此,根节点具有最小值,这种堆为小顶堆。

思路:用筛选法将一个待排序的数据元素序列建成堆,得到最小值---根节点的值。将跟节点值向后交换,再将余下的值调整成堆,重复进行,直到排序完成。

步骤:1.将数据元素序列看成是一棵完全二叉树节点的层次序列,此时它不具有堆得特性。

        2.将这棵完全二叉树调整成堆。

        3.将一棵子树调整成堆。

        4.重复上一步,从下向上依次将子树调整成堆。

        5.这时根节点的值最小,将跟节点交换到最后的位置,再将序列的前n-1个元素调整成堆。

        6.重复上一步,将子序列调整成堆,知道子序列列长度为1,堆排序完成。

描述:

算法:

Code

 

posted @ 2009-02-07 00:28  idoku  阅读(215)  评论(0编辑  收藏  举报