数组排序与去重

153 阅读2分钟

数组排序

// 冒泡排序

    //当i=0的时候,里面的循环完整执行,从j=0执行到j=6,这也就是第一遍排序,结果是将最大的数排到了最后,
    // 这一遍循环结束后的结果应该是[8,15,88,55,76,21,39,94]
    // 当i=1的时候,里面的循环再次完整执行,由于最大的数已经在最后了,
    // 没有必要去比较数组的最后两项,这也是j<arr.length-1-i的巧妙之处,结果是[8,15,55,76,21,39,88,94]
    // 说到这里,规律就清楚了,每次将剩下数组里面最大的一个数排到最后面,
    // 当第一个循环执行到最后的时候,也就是i=6,此时,j=0,只需要比较数组的第一和第二项,比较完毕,返回。
    var examplearr = [8, 94, 15, 88, 55, 76, 21, 39];
    function sortarr(arr) {
        for (i = 0; i < arr.length - 1; i++) {
            // console.log(1);
            for (j = 0; j < arr.length - 1 - i; j++) {
                // console.log(2);
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
    sortarr(examplearr);
    console.log(examplearr);

    // 插入排序
    function insertSort(array) {
        /*start根据已排列好的项数决定*/
        var start = 1;
        /*按顺序,每一项检查已排列好的序列*/
        for (var i = start; i < array.length; start++ , i++) {
            /*跟已排好序的序列做对比,并插入到合适的位置*/
            for (var j = 0; j < start; j++) {
                /*小于或者等于时(我们是升序)插入到该项前面*/
                if (array[i] <= array[j]) {
                    // console.log(array[i] + ' ' + array[j]);
                    array.splice(j, 0, array[i]);
                    /*删除原有项*/
                    array.splice(i + 1, 1);
                    break;
                }
            }
        }
        return array;
    }

    console.log(insertSort(examplearr));

数组去重

// 通过索引值  indexof == -1
    function unique1(arr) {
        var newArr = [];
        var len = arr.length;
        for (var i = 0; i < len; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i])
            }
        }
        return newArr;
    }


      //利用对象
      function unique3(arr) {
        var obj = {},
            len = arr.length,
            newArr = [];
        for (var i = 0; i < len; i++) {
            if (!obj[arr[i]]) {
                obj[arr[i]] = 1;
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }