# 选择排序

  • 时间复杂度(平均):O(n^2)
  • 时间复杂度(最坏):O(n^2)
  • 时间复杂度(最好):O(n^2)
  • 空间复杂度:O(1)
  • 不稳定

无论数据规模,选择排序都是O(n^2)的时间复杂度,所以样本长度越小越好;唯一好处就是不占用额外空间

# 算法

第一次循环找到前arr.length个元素中的最小值,将其与arr[0]交换,使第一个元素为最小值

第二次循环找到后arr.length-1个元素中的最小值,将其与arr[1]交换,是第二个元素为次小值

依次循环。。。

function selectionSort(arr) {
	for (let i = 0; i < arr.length - 1; i++) {
		let minIndex = i;
		for (let j = i + 1; j < arr.length; j++) {
			if (arr[minIndex] > arr[j]) {
				minIndex = j;
			}
		}
		[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
	}
	return arr;
}
1
2
3
4
5
6
7
8
9
10
11
12