排序算法(四)选择排序
1.算法思路
选择排序(Selection-Sort)是一种简单直观的排序算法。它的工作原理:依次遍历数列的位置(0到n),首先取第 0 个位置,之后从该位置之后的数列中寻找最小(最大)元素,将找到的数据元素与第 0 个位置的数据元素相交换。依次遍历接下了的所有位置(1、2、3.....n),直到所有元素均排序完毕。
2.图片示例
静图示例
动图示例
3.代码实现
int[] numbers = {32, 54, 66, 8, 1, 6, 77, 69};
for (int i = 0; i < numbers.length; i++) { // 最外层循环起遍历所有位置作用
// 在这里记录位置和数据是极为重要的!!!
// 分析一下代码即可明白
int key = numbers[i]; // 记录当前数据,其实 numbers[i] 就是当前数据
int position = i; // 记录当前数据的位置,其实 i 就是当前数据的位置
for (int j = i + 1; j < numbers.length; j++) { // 最里面循环起寻找最小(大)元素
// 取最小(大)元素
if (numbers[j] < key) {
key = numbers[j];
position = j;
}
}
// 交换数据
numbers[position] = numbers[i];
numbers[i] = key;
}
4.总结
选择排序是不稳定排序算法。因为最坏情况下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1),而最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。在使用选择排序算法时,数据量尽量小为好。