![](https://box.kancloud.cn/1c7e20f306ddc02eb4e3a50fa7817ff4_811x248.jpg)
冒泡排序要频率的两两交换,我们可以先标记出最小的元素,最后再交换,这样可以减少交换的次数。
特点:每趟循环只执行一次交换操作。
思路:在每次循环时找出最小的元素,然后标记一下,不执行交换,直到本次循环完之后,把标记的最小的元素放到最前面,然后再找第2小的元素。。。。
# JavaScript
~~~
function selectSort(arr) {
// 保存每次循环时最小元素的下标
let minIndex
for(let i=0;i<arr.length-1;i++) {
// 设置最小的开始为本次循环第一个元素
minIndex = i
for(let j=i+1;j<arr.length;j++) {
if(a[minIndex]>a[j]) {
minIndex = j
}
}
// 把最小的元素交换到开始的位置
[a[i],a[minIndex]] = [a[minIndex],a[i]]
}
return arr
}
~~~