Skip to content
文档章节

选择排序

选择排序是将序列 L 分量两部分,前面已排序的序列 L1, 后面未排序的序列 L2, 每次将 L2 中最小的数和 L2 开始第一个元素 交换,因此是一种不稳定的算法。

复杂度分析:

  • 时间复杂度:O()
  • 空间复杂度:O(1)
js
Array.prototype.selectionSort = function () {
	var arr = this.slice(0);

	function swap(i, j) {
		var temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}

	function sort() {
		var len = arr.length;
		for (var i = 0; i < len - 1; i++) {
			let min = i

			for (var j = i + 1; j < len; j++) {
				if (arr[j] < arr[min]) {
					min = j;
				}
			}

			if min !== i swap(i, min);
		}
	}

	sort();

	return arr;
};

var arr = [2, 1, 2, 3, 5, 1, 6];

console.log(arr.selectionSort());