JavaScript排序方法

冒泡排序

这里写图片描述

    <script type="text/javascript" charset="UTF-8">
        var arr=[1,8,9,6,7,5,4];
        for(var i=0; i<arr.length-1;i++){
            for(var j=1;j<arr.length;j++){
                if (arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
                console.log("第"+(i+1)+"趟"+arr);
            }
        }
        console.log(arr);
    </script>

这里写图片描述

快速排序

这里写图片描述

    <script type="text/javascript" charset="UTF-8">
        var arr=[1,8,9,6,7,5,4];
        function quick(arr) {
            if(arr.length <= 1){
                return arr;
            }
            console.log(arr);
            var result=[];
            var left=[];
            var right=[];
            var pivot=arr[0];//指针从arr[0]开始
            //遍历数组下标,小的放在left[],大的放在right[]
            for(var i=1;i<arr.length;i++){
                if(arr[i]<pivot){
                    left.push(arr[i]);
                }else{
                    right.push(arr[i]);
                }
            }
            //左右数组迭代并与指针数组
            result=quick(left).concat(pivot,quick(right));
            return result;
        }
        arr=quick(arr);
        console.log(arr);
    </script>

这里写图片描述

系统内置的sort方法

注意!简单的sort根据字符编码排序:

    <script type="text/javascript" charset="UTF-8">
        var arr=[10,8,9,6,7,5,4];
        arr.sort();
        console.log(arr);
    </script>

这里写图片描述
正常排序:

   <script type="text/javascript" charset="UTF-8">
        var arr=[10,8,9,6,7,5,4];
        arr.sort(function (a,b) {
            /*或者是直接return a-b;*/
            if(a>b){
                return 1;
            }else{
                return -1;
            }
        });
        console.log(arr);
    </script>

sort函数十分好用,能够高度可自定义!完成按条件(按对象的某个属性)排序

   <script type="text/javascript" charset="UTF-8">
        var arr=[
            {"name":"Tom","Math":49,"English":89},
            {"name":"Mike","Math":29,"English":23},
            {"name":"Amy","Math":69,"English":50}

        ];
        //按数学成绩排序
        arr.sort(function (a,b) {
            if(a.Math>b.Math){
                return 1;
            }else{
                return -1;
            }
        });
        console.log(arr);
    </script>

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值