选择排序是很基础的一种排序算法,基本思路是每次循环找出当前未排序元素中最小(最大)的元素,把它和当前剩余元素中的第一个做交换,直到剩余元素为零,排序完成。
例如要对以下数组做选择排序
[3,1,2,4,6,5]
第一次循环,假设3是当前最小的元素,然后依次和后面的元素做比较,发现1是剩余元素中最小的,此时交换3和1的位置,此时数组变成
[1,3,2,4,6,5]
依次类推,当未排序元素只有一个时,已经默认是有序的了,排序就完成了
选择排序的java实现:
public static void selectSort(int[] arr) {
// 当循环到最后一个元素时,不需要再做比较
for(int i = 0;i < arr.length - 1; i++) {
// 假设当前i位置的元素是剩余元素中最小的
int minIndex = i;
// 从i+1开始,依次与minIndex位置的元素比大小,如果比它小,就更新minIndex
for(int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 如果i位置的元素不是最小元素,则将i位置的元素与最小的元素交换位置
if(i != minIndex) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
网友评论