• 选择排序


    1. 选择排序
      • 是一种简单直观的排序算法,它也是一种交换排序算法,和冒泡排序有一定的相似度,可以认为选择排序是冒泡排序的一种改进。
      • 表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。
    2. 原理
      • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
    3. 算法描述
      • 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

      • 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

      • 重复第二步,直到所有元素均排序完毕。

    4. 动图演示

      在这里插入图片描述

    5. 代码实现
      public static void selectionSort(int[] arr) {
          int temp, min = 0;
          for (int i = 0; i < arr.length - 1; i++) {
              min = i;
              // 循环查找最小值
              for (int j = i + 1; j < arr.length; j++) {
                  if (arr[min] > arr[j]) {
                      min = j;
                  }
              }
              if (min != i) {
                  temp = arr[i];
                  arr[i] = arr[min];
                  arr[min] = temp;
              }
          }
      }
    6. 算法分析
      • 时间复杂度
        • 最佳情况:T(n) = O(n2)

        • 最差情况:T(n) = O(n2)

        • 平均情况:T(n) = O(n2)

      • 空间复杂度:O(1)
    7. 适用场景
      • 选择排序实现也比较简单,并且由于在各种情况下复杂度波动小,因此一般是优于冒泡排序的。在所有的完全交换排序中,选择排序也是比较不错的一种算法。但是,由于固有的O(n2)复杂度,选择排序在海量数据面前显得力不从心。因此,它适用于简单数据排序。
  • 相关阅读:
    windows 安装 composer
    css 3 波浪特效
    phpstudy composer 安装YII2
    weUI weui-navbar 实现
    YII 多表联查 纵表
    YII2 models非常好用的控制输出数据【重写Fields】
    重写Fields 控制models 数据输出字段
    Plugin with id com.android.application not found
    react native
    java.lang.IllegalArgumentException: Missing either @POST URL or @Url parameter.
  • 原文地址:https://www.cnblogs.com/lj1507899927/p/13285709.html
Copyright © 2020-2023  润新知