介绍
- 快速排序英文名为SelectSort
- 从数组中找到最小的放到前边
基本思路
- 1、默认待排序数组中第一个作为最小值
- 2、找待排序数组(注意不是整个数组哦)中真正的最小值
- 3、找到真正的最小值和待排序数组第一个数据进行交换,真正的最小值到达正确位置
- 4、重复1、2、3
代码
<!----java----->
public static void main(String[] args) {int[] arr = {10,2,8,3,1};sort(arr);System.out.println(Arrays.toString(arr));}public static void sort(int[] arr) {for(int i=0;i<arr.length;i++) {int minIndex = i;for(int j=i+1;j<arr.length;j++) {if(arr[j]<arr[minIndex]) {minIndex = j;}}if(i!=minIndex) {int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}}<!------------------------>
运行结果;
[1, 2, 3, 8, 10]
<!----python----->
def selectSort(arr):for i in range(len(arr)):min = i;for j in range(i+1,len(arr)):if(arr[j]<arr[min]):min = j;arr[i],arr[min] = arr[min],arr[i];return arr;arr = [10,2,8,3,1]
print(selectSort(arr))
<!------------------------>
运行结果;
[1, 2, 3, 8, 10]
没明白?老规矩,上图

复杂度
- 时间复杂度为:O(n^2)
- 空间复杂度:O(1)
- 它是非稳定排序
- 原地排序
推荐博客:
- 还没看懂?那一定是我写的问题,推荐两篇文章
冰狼爱魔-十大经典排序算法
涛声依旧-选择排序