选择排序

1. 选择排序思路及其与冒泡排序的对比

image-20220812182220424

不稳定排序可能会把数值大小相同的元素位置进行交换


2. 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class kuai_su_pai_xu {
public static void main(String[] args) {
int[] array = {5, 2, 7, 4, 1, 3, 8, 9};
selection(array);
}

public static void selection(int[] a){
for (int i = 0; i < a.length; i++) {
//i 代表每轮选择最小元素 要 交换 到 的目标索引
int s = i;//代表最小元素的索引
for (int j = s + 1; j < a.length; j++){
if (a[s] > a[j]){
s = j;
}
}
//把最小的换到 i 的位置上
//每次只需要在这里交换一次 因为在上面记录了该轮最小的索引
//也算个小优化
swap(a,s,i);
System.out.println(Arrays.toString(a));
}
}

/**
* 置换函数
*/
public static void swap(int[] a, int i, int j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
1
2
3
4
5
6
7
8
9
//可见每次都是把当前循环最小的元素放到对应的索引上
[1, 2, 7, 4, 5, 3, 8, 9]
[1, 2, 7, 4, 5, 3, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]
[1, 2, 3, 4, 5, 7, 8, 9]

选择排序
https://blog.gutaicheng.top/2022/07/24/选择排序/
作者
GuTaicheng
发布于
2022年7月24日
许可协议