zoukankan      html  css  js  c++  java
  • 排序算法1

    排序算法1 - 选择排序

    算法思路

    首先在数组中找到最小的元素,将其放在数组的第一位

    再从数组中剩下的元素(第2位到n-1位)找到最小的元素,放到数组的第二位

    以此类推,直到所有元素均排序完毕

    代码实现

      public void selectionSort(int[] arr) {
            if (arr == null || arr.length < 2) {
                return;
            }
            for (int i = 0; i < arr.length; i++) {
                int minIndex = i;
                for (int j = i + 1; j < arr.length; j++) {
                    minIndex = arr[j] < arr[minIndex] ? j : minIndex;
                }
                swap(arr, i, minIndex);
            }
        }
    
        public void swap(int[] arr, int i, int minIndex) {
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    

    复杂度分析

    时间复杂度为 O(N²) (第一次比较 n 个数,第二次比较 n-1 个数,第三次比较 n-2 个数... 呈等差数列分布,所以复杂度为 an² + bn + c 的格式)

    不占用额外的内存空间

    欢迎大家来我博客逛逛 mmimo技术小栈

  • 相关阅读:
    Codeforces
    Codeforces
    SCUT
    模板
    SCUT
    SCUT
    模板
    SCUT
    UVA 437 "The Tower of Babylon" (DAG上的动态规划)
    UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)
  • 原文地址:https://www.cnblogs.com/mmimo/p/15387984.html
Copyright © 2011-2022 走看看