0%

选择排序-排序算法

依次在数组中从小到大找数,在数组的头从前往后放。

选择排序

平均时间复杂度:O(n²);最好情况:O(n²);最坏情况:O(n²);

空间复杂度:O(1)

排序方式:In-place

稳定性:不稳定

Implementation:

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
/**
* 选择排序
* @author hxr
* @see https://github.com/MisterBooo/LeetCodeAnimation
* 核心:依次在数组中从小到大找数,在数组的头从前往后放。数组从前向后遍历,数据从前往后放if (min!=i),遍历数组前边每次前进一下(i++)。
*/
public class ChoiceSort {
public static void main(String[] args) {
int[] arr = {8,5,3,2,4};
for (int i = 0; i < arr.length - 1; i++) {
//假定 i最小,利用下标。只是找到最小,具体的数值在遍历完数组才用,利用下标即可。
int min = i;
//通过遍历数组寻找真的最小。
for (int j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
//将最小与未有序数据放到未有序的头
if (min!=i) {
int temp2 = arr[min];
arr[min] = arr[i];
arr[i] = temp2;
}
}
System.out.println(Arrays.toString(arr));
}
}