zoukankan      html  css  js  c++  java
  • 数组排序方法

    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;
            }
  • 相关阅读:
    linux tomcat 突然验证码出不来
    使用open live writer客户端写博客
    创建自己的maven模板
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    win10 操作配置备忘
    Maven使用
    ORA-12514: TNS:listener does not currently know of service …
    PlantUML——4.实例演示1
    C语言基础(一)
    Linux系统挂载FAT32的U盘
  • 原文地址:https://www.cnblogs.com/benbonben/p/15098952.html
Copyright © 2011-2022 走看看