简单选择排序
选择排序的思想是:
- 在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;
- 再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。
原始的数组 : 101, 34, 119, 1 第一轮排序 : 1, 34, 119, 101 第二轮排序 : 1, 34, 119, 101 第三轮排序 : 1, 34, 101, 119
说明:
- 选择排序一共有 数组大小 - 1 轮排序
- 每1轮排序,又是一个循环, 循环的规则(代码)
2.1先假定当前这个数是最小数
2.2 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
2.3 当遍历到数组的最后时,就得到本轮最小数和下标
2.4 交换 [代码中再继续说 ]
代码:
//选择排序
static void selectSort(int[] arr){
for(int i = 0; i < arr.length; i++) {
int minIndex = i;/**记录后面的最小值的下标*/
for (int j = i + 1; j < arr.length; j++) //注意从i+1开始
if(arr[j] < min) {
minIndex = j;
}
swap(arr,i,minIndex);
}
}