• javascript实现快速排序和二分法查找


    1.快速排序:

    思路:找到数组中间的元素,把它单拎出来,然后从0开始判断数组中的元素比该基准元素大还是小,小的存左边,大的存右边,然后如此反复递归,得出结果。

    function quickSort(arr) {
            if (arr.length <= 1) { return arr; }//如果输入数组长度小于等于1,直接返回数组。这也是递归算法的终结部分
            var base = Math.floor(arr.length / 2);//找到中间的基准元素位置
    var baseEle = arr.splice(base, 1)[0];//把基准元素从arr中摘除 var left = []; var right = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < baseEle) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([baseEle ], quickSort(right)); //返回递归左右两个部分concat中间元素,这就是结果 };


    2.二分查找法

    思路:从有序的数列中折半查找,看过幸运52吧?猜价格拿大奖的时候怎么猜最好?傻子都知道。

    var erfen = function (val, arr) {
            if (arr.length < 1||val<arr[0]||val>arr[arr.length-1]) { 
              return false; 
            }//如果这个数字没在其中直接返回false
            else if (val == arr[0]||val==arr[arr.length-1]) {
                return true;
            }//如果找到了就返回true
            else if (arr.length == 1) {
                return false;
            }//如果不能再缩小了而且没查到返回false
            var res = [];
            var base = Math.floor(arr.length / 2);
            if (val > arr[base]) {
               res = arr.splice(base + 1, arr.length - 1);
            }//如果大于中间的从右边开始找
           else if (val = arr[base]) {
                return true;
            }//恰巧等于中间的就返回true
            else {
               res = arr.splic(0, base - 1);
            }//如果小于中间的就从右边找
            return erfen(val,res);//递归
        };
  • 相关阅读:
    AUTOCAD二次开发-----删除一个图层里面的所有对象
    AutoCAD .NET: 遍历模型空间
    c# 将dwg文件转化为pdf
    C# 读取CAD文件缩略图(DWG文件)
    C#.Net实现AutoCAD块属性提取
    用.NET从外部dwg文件导入块
    AutoCAD二次开发(.Net)之获取LSP变量的值
    AutoCAD二次开发(.Net)之创建图层Layer
    Ceilometer和Gnocchi的监控架构解析
    《Python核心编程》笔记
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/3575549.html
Copyright © 2020-2023  润新知