选择排序的基本思想是每次从右边未排好序的元素中找出最小的元素,然后将该元素和左边已经排好序的元素中最大的元素(它位于左边元素序列的最右端)交换,这样每次交换都将一个元素排好序。 总的比较操作次数为(n-1) + (n-2) + ... + (1)=n(n-1)/2;总的交换操作为n-1(所以相对其他的排序算法,它的交换操作次数比较少)。
注意选择排序的一个缺点是,它是不稳定的(unstable),比如对序列(a,b,c,d),设a=b,d = min(b,c,d),那么第一次选择到最小元素d之后需要交换:a<->d,得到的结果为(d,b,c,a),因为a=b,原来a和b的位 置(a...b)经过第一次交换后变成了(b...a),所以不稳定。
实现:
测试(输入序列: 1,3,10,9,2,7,19,5,20,4,8,11):
输出: 1 2 3 4 5 7 8 9 10 11 19 20