选择排序
基本思想
在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
第二次遍历n-2个数,找到最小的数值与第二个元素交换;
。。。
第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。
思路图解
原始: 89,77,110,2
第一轮: 2,77,110,89
第二轮: 2,77,110,89
第三轮: 2,77,89,110
时间复杂度
代码
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i =0;i<arr.length;i++){
arr[i] = (int)(Math.random()*10);
}
System.out.println("原数组"+ Arrays.toString(arr));
selectSort(arr);
System.out.println("排序后"+Arrays.toString(arr));
}
public static void selectSort(int[] arr) {
for (int i = 0;i<arr.length;i++){
int minIndex = i;
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]){
minIndex = j;
min = arr[j];
}
}
if (minIndex != i){
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
}