经典排序算法之五 选择排序
选择排序,即选一个数,与其余的数一一比较,将小的数放在最前面,这样一次一次比较的过程中,逐步将最小的排到最前面。完整的代码可以到我的 GitHub 上查看 Algorithm。
算法描述
- 对于数组 a[n],其长度为 len,另 i = 0,j = i+1,比较 a[i] 与 a[j],并将 a[i] 赋与较小的值,j++;
- 当 j < len,重复操作步骤 1 的比较操作,循环结束后,确立了一个最小值;
- 当 i < len - 1 ,重复 步骤 1、步骤2,直到数组排序完成。
算法图解
代码实现
1 | public static void selectionSort(int[] arr){ |
效率分析
当所有元素都已经由小到大排好时,仍然要依次比较,时间复杂度为 O(n²);
当所有元素都从大到小排列时, 除了比较,还要交换移位操作,最终时间复杂度也是 O(n²)。
在我的机器上运行 10000 个元素排序,所用的时间为:
1 | 执行时间为:196ms |
20000 个元素所用的时间
1 | 执行时间为:771ms |
100000 个元素所用的时间
1 | 执行时间为:18782ms |
选择排序的效率跟冒泡排序差不多,数据比较多时,不建议此排序。
Title: 经典排序算法之五 选择排序
Author: mjd507
Date: 2017-04-02
Last Update: 2024-01-27
Blog Link: https://mjd507.github.io/2017/04/02/Algorithm-Selection-Sort/
Copyright Declaration: This station is mainly used to sort out incomprehensible knowledge. I have not fully mastered most of the content. Please refer carefully.