选择排序(Selection sort)
是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
package gg;
public class Hello {
public static void main(String[] args) {
int[] arr={1,9,7,65,65,99,13};
System.out.println("交换之前的数组:");
for(int num:arr){
System.out.print(num+" ");
}
//选择排序的优化
for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
int minIndex = i;
for(int j = minIndex + 1; j < arr.length; j++){// 选最小的记录
if(arr[j] < arr[minIndex]){
minIndex = j; //记下目前找到的最小值所在的位置
}
}
//在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
if(i != minIndex){ //交换a[i]和a[minIndex]
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
System.out.println();
System.out.println("交换后的数组:");
for(int num:arr){
System.out.print(num+" ");
}
}
}
执行结果:
交换之前的数组:
1 9 7 65 65 99 13
交换后的数组:
1 7 9 13 65 65 99