Algorithm Selection Sort

The selection sort algorithm sorts an array by repeatedly finding the minimum element (considering ascending order) from unsorted part and putting it at the beginning. The algorithm maintains two subarrays in a given array.

前言

    选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

选择排序

选择排序思想:

选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]到arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]到arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]到arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]到arr[n-1]中选取最小值,与arr[i-1]交换,…,第n-1次从arr[n-2]到arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。

选择排序解析:


选择排序动图:


选择排序代码:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* @Auther: Arsenal
* @Date: 2020-03-17 0:37
* @Description: 选择排序
*/
public class SelectionSort {
public static void main(String[] args) {
//int[] arr = {3, 9, -1, 10, -2};
//System.out.println("原始的数组:" + Arrays.toString(arr));

int[] arr = new int[80000];
for (int i = 0; i < 80000; i++) {
arr[i] = (int) (Math.random() * 80000);
}
long start = System.currentTimeMillis();
selectionSort(arr); //2305毫秒
long end = System.currentTimeMillis();
System.out.println("80000个数字排序所用时间:" + (end - start));
}

/**
* 选择排序
* @param arr 数组
*/
public static void selectionSort(int[] arr) {

for (int i = 0; i < arr.length - 1; i++) {
int min = arr[i];
int minIndex = i;

for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
//优化
if (minIndex != i) { //交换
arr[minIndex] = arr[i];
arr[i] = min;
}
//System.out.println("第" + (i + 1) + "趟排序后的数组:");
//System.out.println(Arrays.toString(arr));
}
}

}

延伸

    选择排序
    图解 选择排序
    选择排序算法
    Selection Sort
    韩顺平数据结构和算法

Content
  1. 1. 前言
  2. 2. 选择排序
  3. 3. 延伸