选择排序
上一节
下一节
1.简单选择排序
简单选择排序的操作方法是:第一趟,从n个记录中找出关键字最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中再选出关键字最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+1个记录中选出关键字最小的记录与第i个记录交换,直到整个序列按关键字有序。
时间复杂度为O(n2)。
简单选择排序是不稳定的排序方法。
2.堆排序
堆排序是直接选择排序法的改进,是利用堆来进行排序的方法。堆是一种特殊的完全二叉树,如果该完全二叉树中每一个结点的值均大于或等于它的两个子结点的值,称其为大顶堆(或大根堆);如果该完全二叉树中每一个结点的值均小于或等于它的两个子结点的值,称其为小顶堆(或小根堆)。
堆排序的基本步骤是:
(1)把用数组存储的n个待排序数据,看成一棵完全二叉树的顺序存储形式,并对这棵完全二叉树进行一系列的比较交换,并将其建成堆。
(2)将堆顶数据和堆中最后一个数据交换,然后将堆中最后一个记录脱堆。
(3)由于(2)步的交换,破坏了原有的堆结构,应将其不断向下交换,直到剩余的待排序数据重新调整成一棵堆。
(4)重复(2)和(3)两步,直到待排序数据只剩一个为止,此时所有数据已排序完毕。

