选择排序之小白学算法

it2023-12-16  99

直观展示

排序思路

从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为0.

稳定性

排序算法是不稳定的排序方法

时间复杂度

(N^2)

算法评价

这是一种简单直观的排序算法,无论什么数据进去都是相同的时间复杂度,数据规模越小越好,唯一的好处就是不占用额外的内存空间。

选择排序示例

[2 4 3 1 6 5] 初始状态 [1][3 4 2 6 5] 第一次选择结束 [1 2][4 3 6 5] 第二次选择结束 [1 2 3][4 6 5] 第三次选择结束 [1 2 3 4][6 5] 第四次选择结束 [1 2 3 4 5][6] 第五次选择结束

选择排序代码示例:

public void select_sort(int[] arr) { int min; if (nums == null || nums.length < 2) { return; } //总共需要经过n-1轮比较 for(int i = 0; i < arr.length-1; i++) { min = i; //每轮需要比较的次数n-i for (int j = i+1; j < arr.length;j++) { if(arr[min] > arr[j]) { //min记录目前能找到的最小值元素的下标 min = j; } } //将找到的最小值和i位置所在的值进行交换 if(i != min) { int t = arr[i]; arr[i] = arr[min]; arr[min] = t; } } }

不足之处,欢迎大佬批评指正

最新回复(0)