js算法之选择排序

选择排序:

     两个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];

你可能感兴趣的:(js算法之选择排序)