选择排序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;
            }
        }

    }

}

posted @ 2021-09-25 16:04  CH0701  阅读(58)  评论(0)    收藏  举报