数组排序方法

1.冒泡排序法

var arr = [1,4,54,6,2,3,19]
var medium = null; 
        for (var j = 0; j <= arr.length-1; j++) {
            var flag = true;
            for (var i = 0; i <= arr.length-1-j; i++) {
            if (arr[i] > arr[i+1]) {
                medium = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = medium;
                flag = false
            }
        }
        if (flag) {
            break
        }
        }

结果: [1, 2, 3, 4, 6, 19, 54]


2.sort() 方法

var arr = [1,12,4,5,23];
arr.sort((a,b)=>{
    return a>b ? 1 : -1
})
结果 : [1, 4, 5, 12, 23]


3.快速排序法 (原理是二分法)

/*     
          *首先要了解concat()函数和函数的递归操作
          *1.找一个基准点
          *2.建立两个数组,分别存储左边和右边的数组
          *3.利用递归,进行拆分,用concat()函数将其拼接起来
              */
function quick(arr) {
            if (arr.length<=1){return arr}
            // 取数组的中间项的下标
            var middleIndex = Math.floor(arr.length / 2);
            // 取出数组的中间项,并把该项从数组中删除,且原数组受到影响
            var middle = arr.splice(middleIndex,1)[0];
            // 声明两个数组,分别用来存在比middle小和大的值
            var leftArr = [];
            var rightArr = [];
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] <= middle) {
                    leftArr.push(arr[i])
                } else if (arr[i] > middle) {
                    rightArr.push(arr[i])
                }
            }
            // 使用递归,并把三个数组拼接起来
            return quick(leftArr).concat([middle],quick(rightArr))
        }


4.插值排序法 

function insertSort(arr) {
            //从第二个数开始,依次插入
            for (var i = 1; i < arr.length; i++) {
                //判断目标元素是否小于前一个元素
                if (arr[i] < arr[i - 1]) {
                    var current = arr[i];
                    var j = i - 1;
                    //从有序数列从后往前对比,如果目标元素小于与之对比的当前元素,当前元素位置往后挪一位
                    while (j >= 0 && current < arr[j]) {
                        arr[j + 1] = arr[j];
                        j--;
                    }
                    //插入
                    arr[j + 1] = current;
                }
            }
            return arr;
        }

 

posted @ 2021-08-04 15:02  BenBonBen  阅读(124)  评论(0编辑  收藏  举报