口诀:
两两相比
每轮取最小数交换
外层n-1
内层(i + 1 ~ n)
优化:相比冒泡排序,虽然比较次数没变,但是交换次数减少了。
package sort;
/**
* 选择排序
*/
public class Selection {
public static void main(String[] args) {
int[] array = { 1, 3, 5, 2, 4 };
System.out.println("未排序前:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
selectionSort(array);
System.out.println();
System.out.println("排序后:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
/*
选择排序:两两相比、每轮取最小数交换、外层n-1、内层(i + 1 ~ n)
*/
public static void selectionSort(int[] array){
for (int i = 0; i < array.length - 1; i++) {
int index = i; //待定的位置
for (int j = i + 1; j < array.length; j++) {
if(array[index] > array[j]){
index = j;
}
}
//交换位置
if(index != i){
int temp = array[index];
array[index] = array[i];
array[i] = temp;
}
}
}
}