选择排序:
两个for循环嵌套,外循环记录每次循环开始的位置,内循环查找本次循环内的最小值;
实质是每循环一次将查到的最小值放在每次循环的最初开始的位置;
代码:
var arr=[49,38,65,97,76,13,27,49];
function selectionSort(arr) {
var len = arr.length;
var minIndex,temp;
for (var i =0;i
minIndex =i;
for (var j =i +1;j
if (arr[j] < arr[minIndex]) {//寻找最小的数
minIndex =j;//将最小数的索引保存
}
}
console.log(arr);
if(minIndex !=i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] =temp;
}
}
return arr;
}
console.log(selectionSort(arr));
循环开始第一次:i等于数组中第0个数,进行循环,找到最小的数,进行置换
初始值
i=0 这时候49开始循环判断,找到最小的数13进行置换 得到
i=1 这时候38开始向后遍历,找到最小的数27进行置换得到
i=2 时 65开始向后遍历,找到最小值38进行替换
i=3时 97开始向后遍历,找到最小值49进行替换
i=4 76开始向后遍历,找到最小值49进行替换
i=5 65开始向后遍历,没有找到最小值,所以56便为最小值
i=6 97开始向后遍历,找到最小值76进行替换
最后得到数组 [13,27,38,49,49,65,76,97];
网友评论