美文网首页
Javascript排序

Javascript排序

作者: aber | 来源:发表于2016-11-05 19:22 被阅读0次

    /*
    *冒泡排序
    **/

    function bubble(arr) {
    var len = arr.length;
    for (var i=0; i<len; i++) {
    for(var j=i; j<len; j++) {
    if(arr[i] > arr[j]) {
    var tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    }
    }
    }
    }

    /*
    *插入排序
    **/

    function insert(arr) {
    var len = arr.length;
    for(var i=1; i<len; i++) {
    //相当于每次都是在排好序的数组中插入,而且这个数组是当前数组
    if (arr[i] < arr[i-1]) {
    //保存当前元素,这个元素在前面排行续的地方插入的时候,元素会后移
    //所有先要保存
    var curTarget = arr[i];
    var setIndex = i-1;
    //console.log("curTarget", curTarget, "i", i);
    while(setIndex >=0 && curTarget < arr[setIndex] ) {
    arr[setIndex+1] = arr[setIndex];
    setIndex = setIndex -1;
    }
    arr[setIndex+1] = curTarget;
    }
    }
    }

    /*
    *快速排序
    **/
    function quick(arr, minIndex, maxIndex) {
    if (minIndex > maxIndex) return;
    var len = arr.length;
    var baseTarget = arr[minIndex];

    var lIndex = minIndex;
    var rIndex = maxIndex;
    
    while(lIndex != rIndex) {
        //先从最右边开始找, 找到比基数baseTarget小的数就停下
        while (arr[rIndex] >= baseTarget && lIndex < rIndex) {
            rIndex = rIndex -1;
        }
        
        //从最左边开始找, 找到比基数baseTarget大的数就停下
        while (arr[lIndex] <= baseTarget && lIndex < rIndex) {
            lIndex = lIndex +1;
        }
        
        if (lIndex < rIndex) {
            var tmp = arr[lIndex];
            arr[lIndex] = arr[rIndex];
            arr[rIndex] = tmp;
        }
    }
    arr[minIndex] = arr[lIndex];
    arr[lIndex] = baseTarget;
    
    quick(arr, minIndex, lIndex-1);
    quick(arr, lIndex+1, maxIndex);
    

    }

    /*
    选择排序
    每一次循环过程中,通过比较选择出你需要的
    最值
    选择排序法的过程是,通
    过比较,选择出每一轮中最值元素,
    然后把他和这一轮中最最前面的元素交换
    ,所以这个算法关
    *键是要记录每次比较的结果,即每次比较后最值位置(下标)。
    **/
    function selectSort(arr) {
    var len = arr.length;
    for (var i=0; i<len; i++ ) {
    var baseTarget = arr[i];
    var minIndex = i;

        //每次记录最小的位置
        for (var j=i+1; j<len; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        
        arr[i] = arr[minIndex];
        arr[minIndex] = baseTarget;     
        //console.log("selectSort2:", arr);
    }
    

    }

    相关文章

      网友评论

          本文标题:Javascript排序

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