一、简单选择排序思想
很显然,每次我们比较后就把数据进行交换,取出了关键字最小的记录,但是对于与最小关键字记录交换的数据我们直接扔进了乱序中,没有利用这次比较。导致每次选择都要重新比较。
二、树形选择排序
为了减少简单选择排序,我们利用前n-1次比较信息,减少下次选择。类似于锦标赛。根据锦标赛传递关系。亚军只能从被冠军击败的人中选出。
、
实际算法中,我们把需要比较的记录全部作为叶子,然后从叶子开始两两比较,从底向上最后形成一棵完全二叉树。在我们选择出最小关键字后,根据关系的传递,只需要将最小关键字的叶子节点改成无穷大,重新从底到上比较一次就能够得出次小关键字。
然而虽然树形选择比较能够减少比较次数,却增加了辅助空间的使用。为了弥补此缺憾,威廉姆斯于1964年提出了堆排序。