美文网首页前端开发那些事儿
排序算法 — 选择排序法

排序算法 — 选择排序法

作者: Geekholt | 来源:发表于2020-05-15 19:18 被阅读0次

如需转载请评论或简信,并注明出处,未经允许不得转载

概述

选择排序就是通过遍历找到数组中的最小值,不断的与数组中首个未经过排序的数据进行交换的排序算法

时间复杂度

O(n²)

排序过程

  1. 初始化一个数组


  1. 找到数组中最小值


  1. 将最小值与第1个数进行交换


  2. 从第2位数开始找到数组中最小值


  3. 将最小值与第2个数进行交换


  4. 从第3位数开始找到数组中最小值
    ......

不断重复上述步骤,直到数组从小到大排列

代码

public static void sort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n; i++) {
        // 寻找[i, n)区间里的最小值的索引
        int minIndex = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        //交换 i 和 minIndex
        swap(arr, i, minIndex);
    }
}

private static void swap(int[] arr, int i, int j) {
    int t = arr[i];
    arr[i] = arr[j];
    arr[j] = t;
}

性能测试

随机生成10,000个从0到10,000的数,分别进行五次测试,效果如下

次数 性能
1 74ms
2 91ms
3 112ms
4 97ms
5 96ms

随机生成100,000个从0到100,000的数,分别进行五次测试,效果如下

次数 性能
1 6635ms
2 5454ms
3 5788ms
4 5322ms
5 6450ms

相关文章

  • 算法-选择排序

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

  • 排序算法

    排序算法分类 排序算法常用主要有:冒泡排序法、快速排序法、选择排序法、插入排序法、堆排序法、归并排序法等几种。 ...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • PHP常见排序算法学习

    题记: 常见的排序算法有:冒泡排序法,快速排序法,选择排序法,插入排序法,此处作为自己最近面试准备进行的学习笔记,...

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

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

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • C语言排序算法积累(2)选择排序

    选择排序法是一种排序算法,跟冒泡算法一样也是一种常用的排序算法。例如将int arr[]数组内的元素按照升序排序 ...

  • Java 9种排序算法详解和示例汇总

    冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和...

  • 各种排序方法

    冒泡排序法 选择排序法 链表排序法 qsort()函数排序法

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

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

网友评论

    本文标题:排序算法 — 选择排序法

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