JS实现选择排序

2016年09月16日Web前端0

选择排序,原理就是每一次从待排序的数据中选出最小(大)的元素,将他放在序列的起始位置,直到排完整个序列。

来看选择排序的js实现方式:

function selectionSort(arr) {
    var len = arr.length,
        min,
        temp;

    for (var i = 0; i < len - 1; ++i) {
        min = i;
        for (var j = i + 1; j < len; ++j) {
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        temp = arr[min];
        arr[min] = arr[i];
        arr[i] = temp;
    }

    return arr;
}

例如,有以下数值[3, 2,6,8, 1] 第一次排序,首先选中第一个元素3(其实是记住他的下标0),然后将他依次与后面的数据比较,因为2<3,所以此时最小值下标min被置为1,6>2 pass,8>2 pass,1<2 min被改为4,循环结束,然后将4下标的值放到数组最前(最小值)。

第二次排序,此时数组是[1, 2, 6, 8, 3],选中第二个元素2(下标1),2<6 pass,2<8 pass,2<3 pass,循环结束,将1下标放到数组第二个位置。

第三次排序,此时数组是[1, 2, 6, 8, 3],选中第三个元素6(下标2),6<8 pass,6>3 min置为4,循环结束,将4下标与下标2的值互换。

第四次排序,此时数组是[1, 2, 3, 8, 6],选中第四个元素8(下表3),8>6 min置为4,循环结束,将4下标与下标3的值互换,得到数组[1, 2, 3, 6, 8],排序结束,得到所需的数组。

目录