树形选择排序(Tree Selection Sort),又称锦标赛排序(Tournament Sort),是一种按锦标赛的思想进行选择排序的方法。时间复杂度为O(nlog2n)理解:两两比较,选出第一个最小值,将原来的叶子节点设置为∞,进行同样的两两比较,既可选出第二个最小值,如此往复。缺点:占用的辅助存储空间较多,和“∞”进行多余的比较等。为了弥补这些缺点J.willioms提出了另一种形式的选择排序——堆排序。

      首先将待排序记录两两分组,将每组的最小值设置为他们的父结点,把所有这些筛选出来的父结点再两两分组,选出每组的最小值并设置为这组的父结点。一层一层筛选,直到选出根结点,就是最小值了,然后将其对应的叶结点设置为∞。

      中心思想类似于锦标赛,先分组然后层层选拨,将每次选拨出来的根结点的值单独记录下来。然后把之前选拨出来的值,设置为∞(无穷大)。那么再次比较时,之前选拨出来的值已经变成无穷大了,自然会被忽略。但有一个问题就是每一次选拨都会重新进行比较。和“∞”进行的多余的比较太多,而且占用过多的辅助存储空间。借助树形选择排序的思想,理解堆排序就会更容易一些。

posted on 2011-05-04 20:20  星晨_jqren  阅读(2603)  评论(0编辑  收藏  举报