Web前端 快速排序 冒泡排序 数组去重 选择排序 防抖 节流

<!-- 快速排序 -->

    <script>

        var arr = [9, 8, 7];

        function quick(arr) {

            if (arr.length <= 1) return arr;

            var middle = arr.splice(Math.floor(arr.length / 2), 1)[0]

            var left = [];

            var right = []

            for (var i = 0; i < arr.length; i++) {

                if (middle < arr[i]) {

                    left.push(arr[i])

                } else {

                    right.push(arr[i])  }

            }

            return quick(left).concat(middle, quick(right))

        }

        // 闭包

        /*

            闭包:可以访问其他函数内部变量的函数  函数套函数

            优点:缓存数据  可以扩大变量的作用域范围

            缺点:会造成内存泄漏  不用的时候不会被回收

        */

        function outer() {

            var a = 10;

            function inner() {

                a++;

                console.log(a);

            }

            return inner

        }

        var info1 = outer();// info1就是inner函数

        info1();//11

        info1();//12

        info1();//13

        // 不用的时候  手动回收

        info1 = null;


 

        /*

            闭包的使用场景:

                1.可以扩大变量的作用域

                2.解决全局作用域问题

        */

        for (var i = 0; i < li.length; i++) {

            (function (i) { 

                li[i].onclick = function () {

                    //是无法拿到对应的下标  

                    console.log(i);//10    }

            })(i)

        }

        //i = 10

        /*

          防抖和节流

              就是为了减少事件频率的发生

              防抖:

                  在一个事件中 添加一个延时定时器 延迟一定的时间执行代码

                  如果在定时器执行的过程中再次触发 定时器从头开始计时(把之前的定时器清除,重新定义一个)

              节流:

                  在一个事件中  添加一个延时定时器  延迟一定的时间再执行代码

                  如果在定时器执行的过程中再次触发 事件状态是禁用的 当定时器完成之后 事件状态解开

        */

        var timer;

        window.onscroll = function () {

            if (timer) { //timer有定时器id 意味着定时器没有执行完

                clearInterval(timer)

            }

            // 判断定时器有没有完成

            timer = setTimeout(function () {

                // 直接写逻辑

            }, 500)

        }


 

        var timer;

        window.onscroll = function () {

            if (!timer) {

                timer = setTimeout(function () {

                    //执行的代码

                    timer = undefined;

                }, 500)

            }

        }

        /*

            冒泡排序:相邻的2个数作比较

            当前这个数  arr[j]  arr[j+1]

        */

        var arr = [0, 4, 1, 9, 10];

        for (var i = 0; i < arr.length - 1; i++) {

            for (var j = 0; j < arr.length - 1 - i; j++) {

                if (arr[j] < arr[j+1]) {

                    var temp = arr[j];

                    arr[j] = arr[j+1];

                    arr[j+1] = temp;

                }

            }

        }

        /*

            选择排序:用当前这个数 依次和后面的数做对比

        */

        for(var i = 0;i<arr.length;i++){

            for(var j = i+1;j<arr.length;j++){

                if(arr[i] > arr[j]){

                    var temp = arr[i];

                    arr[i]  =  arr[j];

                    arr[j] = temp;

                }

            }

        }

    </script>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值