目标:实现选择排序,将数组元素从小到大进行排序
自定义方法selectionSort,传入参数为待排序数组array,返回排序完成后的数组。
思路:使用i从0到array.length-1对数组进行遍历,遍历过程中,使用minIndex变量记录最小值下标,minIndex初始值为i;接着使用变量j对数组下标为i+1~array.length-1的元素进行遍历,遍历过程中对array[j]和array[minIndex]进行比较,如果array[j]小于array[minIndex],将minIndex赋值成j,这层遍历结束后,对array[minIndex]和array[i]进行交换,这样数组中最小的数就交换到了最前面。
简单的来说,选择排序法就是每次遍历都依次把遍历范围中的最小的元素提到最前面来。
代码实现:
//选择排序
public static void selectionSort(int[] array){
for(int i=0;i<array.length;i++){
int minIndex = i;
for(int j=i+1;j<array.length;j++){
if(array[j]<array[minIndex]){
minIndex = j;
}
}
//交换两个数
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
测试代码:
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int left = input.nextInt();
int right = input.nextInt();
int[] array = SortUtil.getRandomArrayData(n, left, right);
System.out.println("排序前:");
print(array);
SortUtil.selectionSort(array);
System.out.println("排序后:");
print(array);
}
public static void print(int[] array){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
}
将20个0~100的数进行排序,打印结果。