选择排序的算法
(1) 整个数列分成两部分:前面是有序数列,后面是无序数列
(2) 初始状态下,整个数列都是无序的,有序数列是空
(3) 一共n个数,需要n-1趟循环(一趟都不能少)
(4) 每比较完一趟,有序数列数量+1,无序数列数量-1
(5) 每趟先假设无序数列的第1个元素(整个数列的第i个元素)是最小的,让当前的最小数,从第i+1个元素开始比较,一直比较到最后一个元素。如果发现更小的数,就假设当前数是最小数。
(6) 一趟比较完后,将发现最小数和无序数列的第一个数交换(如果最小数不是无序数列的第一个数)
public class Select {
public static void main(String[] args) {
int[] arr = {7, 6, 5, 4, 8, 9, 1, 3, 7};
for (int i = 0; i < arr.length; i++) {
//定义一个下标为最小值
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
//判断一个数和最小下标的数比
if (arr[j] < arr[minIndex]) {
//如果比最小下标还小则换下标
minIndex = j;
}
}
//判断最后的下标数是否与原来的下标相等 不相等则交换
if (i != minIndex) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
}