重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换。
编写一个测试程序,读取10个double型的数字,调用该方法,并显示排好序的数字。
package pack2;
import java.util.Scanner;
public class SelectSort {
public static void main(String[] args) {
try(Scanner input = new Scanner(System.in)) {
double[] list = new double[10];
System.out.print("Enter ten numbers: ");
for (int i = 0; i < list.length; i++)
list[i] = input.nextDouble();
selectSort(list);
for (double d : list) {
System.out.print(" "+d);
}
}
}
/**选择排序法*/
public static void selectSort(double[] list) {
for (int i = list.length - 1; i >= 0; i--) {
double currentMax = list[i];
int currentIndex = i;
for (int j = i - 1; j >= 0; j--)
if(list[j] > currentMax) {
currentMax = list[j];
currentIndex = j;
}
if(currentIndex != i) {
list[currentIndex] = list[i];
list[i] = currentMax;
}
}
}
}