美文网首页
【排序算法】2.选择排序

【排序算法】2.选择排序

作者: bit_拳倾天下 | 来源:发表于2022-05-10 00:04 被阅读0次

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
注意选择排序与冒泡排序的区别:冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当前最小(大)元素的位置,最后仅需一次交换操作即可将其放到合适的位置

排序过程

java 实现:

public class ChooseOrderTest {
    public static void main(String[] args) {
        int[] input = new int[]{2,5,4,89,7,89,52,12,54,78};
        for (int n = 0; n < input.length; n++){
            int minIndex = n;
            for (int m = n; m < input.length; m++){
                if (input[m] < input[minIndex]){
                    minIndex = m;
                }
            }
            if(minIndex != n){
                int temp = input[minIndex];
                input[minIndex] = input[n];
                input[n] = temp;
            }
        }
        PrintUtils.print(input);
    }
}

时间复杂度

  • 最优时间复杂度:O(n^2)
    (和冒泡不同,每次循环,未排序的部分都可能是乱序,所以无法判断何时跳出,例如:1 2 3 4 5, 排到 3,实际上已经完成排序了,但是选择排序无法知道,后面的排序是正确的,仍要走完循环才行)
  • 最坏时间复杂度:O(n^2)
  • 稳定性:不稳定(不稳定发生在最小元素与 input[i] 交换的时刻,例如:在取最大值优先等情况下,3 2 8 8 5 的排序为 2 3 5 8 8,可以看到两个 8 颠倒了顺序)

相比于冒泡排序,选择排序更划算,因为冒泡需要不断地交换,而选择排序则是比较一轮,然后再进行交换一次。通常情况交换次数要少于冒泡排序。

相关文章

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • [Haskell] 一些常见的排序算法

    1. 排序算法 (1)选择排序 (2)插入排序 (3)快速排序 (4)归并排序 (5)堆排序 (6)树排序 2. ...

  • 关于JavaScript-2:基本排序算法

    基本排序算法 1.冒泡排序 示例代码: 2.插入法排序 示例代码: 3.选择排序 示例代码: 以上三种排序算法个人...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • 十大排序算法

    十大排序算法 1.插入排序 2.折半插入排序算法 3.选择排序 4.冒泡排序 5.谢尔排序 6.快速排序 7.堆积...

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 【排序算法】2.选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

网友评论

      本文标题:【排序算法】2.选择排序

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