zoukankan      html  css  js  c++  java
  • 快速排序

    说话,“快速排序”这个东东是公司JS面试题中出镜率最高的题目之一
    其实,用sort()方法就好,可为什么还要问其他的方法呢?
    也只能说明:公司想考验人,实在是找不到合适的方法了~~

    快速排序的原理:找基准点、建立二个数组分别存储、递归

    1.找一个基准点(找一组数的中心位置
    2.建立两个数组,分别存储左边和右边的数组
    3.利用递归进行下次比较,这个下次比较就是分别在左边和右边的数组里再找一个基准点


    编写quickSort()方法
    所用到的方法:
    Math.floor()
    splice()
    push()
    concat()

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>快速排序</title>
    <script>
    //sort
    
    //快速排序
    
    //1.找一个基准点
    //2.建立两个数组,分别存储左边和右边的数组
    //3.利用递归进行下次比较
    
    function quickSort(arr){
        if (arr.length<=1){
            return arr;
        }
        //找数组中间的数作为基准点
        var num=Math.floor(arr.length/2);
        var numValue=arr.splice(num,1);//截取长度为1的数字,其实就是找到基准点
        var left=[];
        var right=[];
        for(var i=0;i<arr.length;i++){
            if(arr[i]<numValue){
                left.push(arr[i]);//小于基准点的放左边的数组中
            }else{
                right.push(arr[i]);//大于基准点的放右边的数组中
            }
        }
        return quickSort(left).concat([numValue],quickSort(right));//进行递归,并将数组连接起来
    
    }
    
    alert(quickSort([12,5,37,6,22,40]));
    </script>
    </head>
    
    <body>
    </body>
    </html>
  • 相关阅读:
    ucoreOS_lab5 实验报告
    ucoreOS_lab4 实验报告
    ucoreOS_lab3 实验报告
    ucoreOS_lab2 实验报告
    Mac OSX(Mac OS10.11) 安装 pwntools 失败的最新解决方案
    [最全算法总结]我是如何将递归算法的复杂度优化到O(1)的
    ucoreOS_lab1 实验报告
    Mac下安装npm全局包提示权限不够
    【新特性速递】将纯色背景转换为内置主题!
    【新特性速递】回发时改变表格标题栏和数据!
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5697552.html
Copyright © 2011-2022 走看看