• JS算法总结


    1、选择排序:

    var arr = [3,6,7,2,6,4,1,6,8,24,12,53];
    function sort(arr){
        // 当数组的长度小于1的时候结束递归
        if(arr.length==1){
            return arr;
        }
        var min = arr[0],index = 0;
        for(var i=0;i<arr.length;i++){
            // 计算最小值,如果数组当前值比之前的值还小那么min等于最小值。
            if(arr[i]<min){
                min = arr[i];
                // 保存下最小值的索引,好用来后面删除它
                index = i;
            }
        }
        // 删除最小值
        var prev = arr.splice(index,1);
        // 通过递归,将这一轮中的最小值合并下一轮的最小值,直到arr的length为1停止递归。
        return prev.concat(sort(arr));
    }
    console.log(sort(arr));

    原理分析:

      1、获取当前数组中最小的那个值。

      2、获取最小值的分析:随便从数组中拿出一个值,把这个拿出来的值当做最小值,然后和后面的值比较,如果后面的值比这个当前的值还小,那么我们把拿出来的那个值赋值成那个更小的值。

      3、保存那个最小值的索引,因为我们需要删除这个最小值,好获取下一轮第二小的值,不然下一轮的最小值还是这个值。

      4、删除数组中的最小值。

      5、因为一次只能获取一个最小值,所以我们需要通过递归,不断地重复调用它。

    在前面的一篇文章中我还写给另外个两种排序算法,如果你对算法感兴趣的话可以看看js数组冒泡排序,快速排序的原理以及实现这篇文章。

    2、数组去重:

    var arr = [3,6,7,2,5,5,6,4,1,6,8,24,12,53];
    function sort(arr){
        var obj = {};
        var t = [];
        for(var i=0;i<arr.length;i++){
            // 判断这个对象的属性是否和数组的值相同,相同则不添加,否则给这个对象添加这个值
            if(!(obj[arr[i]]===arr[i])){
                obj[arr[i]] = arr[i];
                // 把这个过滤完以后的值添加到我们的新数组中。
                t.push(arr[i]);
            }
        }
        return t;
    }
    console.log(sort(arr));

    原理分析:

      1、创建一个空对象和一个空数组,空对象用来过滤数组中相同的值,而空数组用来保存过滤以后的值。

      2、循环判断这个空对象的值是否和数组中的值一样,如果一样就不理会,如果这个对象中没有这个值就添加,并且把这个值添加到我们创建的数组中。

  • 相关阅读:
    Java GUI图形界面开发工具
    python操作MySQL数据库
    国外五大股票交易系统及其源码
    五个抄底摸高的交易系统和源代码
    海龟交易系统源码
    模式识别话题
    几种常见模式识别算法整理和总结
    比较好的开源人脸识别软件
    利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别
    JSONObject与JSONArray的使用
  • 原文地址:https://www.cnblogs.com/pssp/p/5263910.html
Copyright © 2020-2023  润新知