• Java选择排序


    算法步骤

    设数组为a[0…n-1]。

    1.      初始时,数组全为无序区为a[0..n-1]。令i=0

    2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。

    3.      i++并重复第二步直到i==n-1。排序完成。

    算法图示

    算法基本性能

    排序方法 平均情况 最好情况 最坏情况 控件复杂度 稳定性
    选择排序 O(n2) O(n2) O(n2) O(1) 不稳定

    Java代码

    package com.sort;
    
    import java.util.Random;
    
    public class Main3 {
    
        // 从小到大
        private static void sort(int[] array) {
            if (array.length <= 1) {
                return;
            }
            for (int i = 0; i < array.length - 1; i++) {
                int min = i;
                /**
                 * 在i+1~array.length-1的下标范围内找出最小的一个元素的下标
                 */
                for (int j = i + 1; j < array.length; j++) {
                    if (array[min] > array[j]) {
                        min = j;
                    }
                }
                /**
                 * 如果最小的下标变化了,那么交换
                 */
                if (min != i) {
                    int temp = array[i];
                    array[i] = array[min];
                    array[min] = temp;
                }
            }
        }
    
        /**
         * 获取指定长度的随机数组
         */
        public static int[] getRandomArray(int n) {
            int[] array = new int[n];
            Random random = new Random();
            for (int i = 0; i < array.length; i++) {
                array[i] = random.nextInt(500);
            }
            return array;
        }
    
        /**
         * 打印指定数组
         */
        public static void outputArray(int[] array) {
            for (int i : array) {
                System.out.print(i + " ");
            }
            System.out.println("");
        }
    
        public static void main(String[] args) {
            int[] array = getRandomArray(10);
            outputArray(array);
            sort(array);
            outputArray(array);
        }
    }
  • 相关阅读:
    _bzoj1061 [Noi2008]志愿者招募【最小费用最大流】
    _bzoj2243 [SDOI2011]染色【树链剖分】
    _bzoj1013 [JSOI2008]球形空间产生器sphere【高斯消元】
    _bzoj1002 [FJOI2007]轮状病毒【瞎搞】
    leetcode 273 Integer to English Words
    leetcode 12 Integer to Roman
    leetcode 1071 Greatest Common Divisor of Strings
    lc6 ZigZag Conversion
    lc13 Roman to Integer
    leetcode 171 Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/alias-blog/p/5787311.html
Copyright © 2020-2023  润新知