选择排序是对冒泡排序的改进,比冒泡排序的效率高一点,但与其他算法比较效率较低
选择排序的思路
- 一开始,选定第一个(最左端)的元素为初始索引位置
- 如果右边的元素小于索引位置的值,则记录下最小值的位置的索引值,重复该步骤,直至本轮循环结束
- 比较完最后一个元素后,即循环结束后,将已记录最小值位置的元素与初始索引位置的元素进行交换
- 接着剔除初始位置的元素,重复以上步骤
- 从思路与执行结果来看,第一轮会选出最小值,第二轮会选出第二最小值…直至排序完成
选择排序的简单实现
//1.定义简单无序数组
var num = [14, 78, 121, 23, 12, 34, 67];
//2.外层循环:从0(初始索引)位置开始取出数据,直到num.length-2(初始索引)位置
for (var j = 0; j < num.length - 1; j++) {
var min = j;
//3.内层循环:依次把最小值位置(一开始是j)的值与后面元素的值比较
for (var i = min + 1; i < num.length; i++) {
//4.如果min位置的数据大于i位置的数据,把i赋给min,即可记录下最小值的位置
if (num[min] > num[i]) {
min = i;
}
}
//5.交换num[min]和min[j]的数据
var temp = num[min];
num[min] = num[j];
num[j] = temp;
}
//控制台打印输出结果查看数组是否排数序好
console.log(num);