选择排序就是重复“从序列中找到最小的值,将其与序列最左边的数字进行交换”这种操作算法。
在序列中寻找最小值使用的是线性查找。
对如下数字进行排序:
6,1,7,8,9,3,5,4,2
第一轮:
找到最小值1,和第一位的6交换位置
1,6,7,8,9,3,5,4,2
第二轮:
从剩下的数据中找到最小值和第二位数据位置交换
找到最小值2,和第二位的6交换位置
1,2,7,8,9,3,5,4,6
...
排序结束。
时间计算:
选择排序使用了线性查找来寻找最小值,因此在第一轮中需要比较n-1个数字,第二轮中需要比较n-2个数字....到n-1轮的时候需要比较1个数字。
因此,总的比较次数和冒泡排序相同,都是n2 / 2次。
每轮中交换数字的次数最多为1次。
如果输入的数据就是按照从小到大顺序排列的,便不需要进行任何交换。
选择排序的时间复杂度也和冒泡排序一样,都为O(n2).
网友评论