JS排序

作者: 亦庄攻城狮 | 来源:发表于2017-11-13 10:27 被阅读0次

针对排序算法总结整理如下:
1.冒泡排序
1)一列数组,从元素第一个位置 0 开始比较相邻 i+1位置的元素,如果大于它,那么交换位置,起始位置i++,继续比较到i+1的元素。重复进行直到 i+1 == 数组长度 时结束循环。现在最后一个元素为最大值。(内层循环 目标:找到最大)
2)len-1,刨去最后一个元素即当前最大元素,继续从i = 0 开始 重复执行(1)步 直到 len = 0时 结束循环(外层循环 目标:重复找到第二个、第三个...最大元素)

function bubbleSort(arr) {
    var len = arr.length, i = 0,temp;
    while(--len) {
        while (i < len) {
            if(arr[i] > arr[i+1]) {
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
            i++;
        }
        i = 0;
    }
    return arr;
}

2.选择排序
1)从第0个元素开始初始假设第一个最小元素索引为0, 从i+1个元素开始循环到len直到找到更小的数则交换索引,否则保持不变, (内层循环 目标:找到最小的数的索引)
2)如果初始设定的索引不是最小数那么交换元素
3)从i+1开始直到 <len-1 重复进行(1)、(2)

function selectSort(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;    //保存当前最小的索引
            }
        }
        if( i != min ){//如果不是当前最小则交换
            temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
    return arr;
}

3.插入排序
1)假定第0个元素为排序好的有序队列,从第1个元素开始,向当前有序队列从后向前一一比较,直到有一个元素大于它则将该元素前移

function insertSort(arr){
    var len = arr.length;
    for (var i = 1; i < len; i++) {
        var temp= arr[i];
        var j = i - 1;
        while (j >= 0 && arr[j] > temp) {
             arr[j + 1] = arr[j];
             j--;
        }
        arr[j + 1] = temp;
    }
    return arr;
}

相关文章

网友评论

      本文标题:JS排序

      本文链接:https://www.haomeiwen.com/subject/remamxtx.html