选择排序是一种简单直观的排序算法。它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,所以称为选择排序。
选择排序算法的基本思想:先从序列的未排序区域中选择一个最小的元素,把它与序列中的第1个元素交换位置;再从剩下的未排序区域中选出一个最小的元素,把它与序列中的第2个元素交换位置……如此反复操作,直到序列中的所有元素按升序排列完毕。
例如,对无序表[56,12,80,92,20]采用选择排序算法进行排序,具体过程如下:
(1)第一次遍历时,从下标为1的位置即56开始,找出关键字值最小的记录12,同下标为0的关键字56交换位置。
(2)第二次遍历时,从下标为2的位置即56开始,找出最小值20,同下标为2的关键字56互换位置。
(3)第三次遍历时,从下标为3的位置即80开始,找出最小值56,同下标为3的关键字80互换位置。
(4)第四次遍历时,从下标为4的位置即91开始,找出最小值80,同下标为4的关键字92互换位置。
(5)至此简单选择排序算法完成,无序列变为有序表。
【例3-8】 利用选择排序算法对序列[56,12,80,92,20]进行排序。
实现步骤如下:
步骤1:找出序列中的最大值,然后跟最后一个元素交换位置。
步骤2:循环执行步骤1。
步骤3:优化函数并封装成函数。