简单选择排序的思想很简单:每次从无序区里选出一个最小的的数,然后把他放进有序区的末尾,如此往复,直到全部有序。
堆排序,堆排序是对简单选择排序的一种改进,显然简单选择排序,要经过大量的比较的出最小的数,而堆排序的着眼点就在于减少比较的次数,那么如何来实现减少比较次数呢,是的,很自然的想到二叉树,下面说一下堆排序的基本思想。
堆排序的基本思想:
先说一下堆的概念:即一完全二叉树,如果每个节点的值都大于(或大于)他的左节点和右节点,则他就是堆。
从上面可以知道,一个堆的根节点必定就是这个数列里最大的数(或最小的数),所以我们只要把我们的数列的初始二叉树调整为堆(从下往上,最终变成堆),然后摘掉根节点就是最大或最小的数了。这样获取到一个 最小数或者最大数的比较次数显然大大降低。然后摘掉根节点后,剩下的重新调整成堆,又获取到最大或最小值,如此往复,直到全部有序。