选择排序SelectSort_听韩顺平课笔记
1.选择排序思想 i = 0;j = i + 1
从arr[0]-arr[n-1]中选取最小值,与arr[0]交换;此时arr[0]有序,继续从arr[1]-arr[n-1]中选取最小值,与arr[1]交换...
- 一共排序n-1轮
- 每轮比较位置从 i + 1 到 arr.length-1
2.选择排序时间复杂度O(n^2)
3.选择排序的优点(VS 冒泡)
八万个随机数据,冒泡排序需要20秒左右,选择排序只需要2秒
- 交换次数少,排序效率高于冒泡
4.选择排序的代码实现:
package 算法.排序;
import java.util.Arrays;
public class SelectSortHsp {
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random()*100+1);
}
System.out.println(Arrays.toString(arr));
selectSortHsp(arr);
System.out.println(Arrays.toString(arr));
}
static void selectSortHsp(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
int min = arr[i];
int minIndex = i;
for (int j = i+1; j < arr.length; j++) {
if (min > arr[j]){
min = arr[j]; // 重置最小值
minIndex = j; // 重置最小值的索引
}
}
if (minIndex != i){
arr[minIndex] = arr[i]; // 这两句的顺序很重要,不能错
arr[i] = min;
}
}
}
}

浙公网安备 33010602011771号