zoukankan      html  css  js  c++  java
  • 排序算法之简单选择排序

    基本思想

    在一组元素中选择具有最小排序码的元素,若它不是这组元素中的第一个元素,则将它与这组元素中的第一个元素对调;在未排序的剩下的元素中反复运行以上步骤,直到剩余元素仅仅有一个为止。

    代码

    private void selectSort(int[] a, int left, int right) {
        for (int i = left; i < right; i++) {
            int k = i;
            int temp;
            for (int j = i + 1; j <= right; j++) {
                if (a[j] < a[k])
                    k = j;
            }
            if (k != i){
                temp = a[i];
                a[i] = a[k];
                a[k] = temp;
            }
        }
    }

    性能分析

    • 时间复杂度
      简单选择排序的排序码比較次数KCN与元素的初始排列无关。

      第i趟选择具有最小排序码元素所需的比較次数总是ni1次,如果整个待排序元素序列有n个元素。因此总的排序码比較次数为

      KCN=m=0n2(ni1)=n(n1)2

      元素的移动次数与元素序列的初始排列有关。在最好情况下。即当初始序列为有序时,无需移动元素;在最坏的情况下,即每一趟都要进行元素交换。

      所以平均情况下的时间复杂度为O(n2)

    • 稳定性
      简单选择排序是一种不稳定的排序方法。
  • 相关阅读:
    HDU 5710 digit sum
    Fibonacci Tree HDU
    2016CCPC东北赛补题
    紫书水题
    20180415校赛
    随心所欲小游戏
    Alpha版本测试报告
    第四天作业
    第二天作业
    第一天作业
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7208190.html
Copyright © 2011-2022 走看看