美文网首页
选择排序

选择排序

作者: stoneyang94 | 来源:发表于2018-05-29 21:48 被阅读0次

    介绍

    1. 开始在整个数组上,也就是0~N-1上,选出一个最小值,把它放在位置0上
    2. 然后在1~N-1上选出一个最小值,放到位置1上
    3. 依次进行,直到整个数组有序
    • n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

    指标

    时间复杂度 O(n²)
    空间复杂度O(1)

    代码

    public class SelectionSort {
    
        public static void selectionSort(int[] arr) {
            if (arr == null || arr.length < 2) {
                return;
            }
            //0~n-1找一个放在最前;1~n-1找一个最小放在次前;类推
            for (int i = 0; i < arr.length - 1; i++) {
                int minIndex = i;//最小量
                //起点后移
                for (int j = i + 1; j < arr.length; j++) {
                    minIndex = arr[j] < arr[minIndex] ? j : minIndex;
                }
                swap(arr, i, minIndex);
            }
        }
    
        private static void swap(int[] arr, int i, int j) {
            int tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
        private static void printArray(int[] arr) {
            if (arr == null) {
                return;
            }
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
        public static void main(String[] args) {
            int[] arr = new int[] {3,5,4,2,6,7,1,9,8};
            selectionSort(arr);
            printArray(arr);
        }
    }
    

    输出

    排序后

    相关文章

      网友评论

          本文标题:选择排序

          本文链接:https://www.haomeiwen.com/subject/oihzjftx.html