选择排序的思想
也是一种很简单的排序算法,它的思路也是将一组待排序的数据,分成2段,一段是“已排序”了的数据,另一段是“未排序”的数据。当然,在最开始的时候,“已排序”区段里是没有数据的。排序开始后,每次都从“未排序”的数据中取出一个最小的元素(注意,这里是取最小的元素,这一点与「 插入排序 」是不同的),然后将这个最小的元素插入到“已排序”数据中末尾元素的后面(这里其实是将这个最小元素与“已排序”数据的末尾紧邻的下一位元素进行交换),这样保持了“已排序”中的数据永远是有序的。一直这么循环的去处理,直到所有的“未排序”的数据都已交换完,则整个排序全部完成。
选择排序的代码实现
function selectSorting(arr) {
for (let i = 0; i < arr.length; i++) {
let minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (i < arr.length) {
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
}
return arr;
}
选择排序的复杂度
时间复杂度:
空间复杂度:O(1)