zoukankan      html  css  js  c++  java
  • 算法

    // 1、判断当前的数组是否有这个数据
    function unique(arr) {
    if (!Array.isArray(arr)) {
    console.log("当前的不是数组");
    return;
    }
    var res = [];
    for (let i = 0; i < arr.length; i++) {
    if (res.indexOf(arr[i] === -1)) {
    res.push(arr[i]);
    }
    }
    }
    //2,数据去重的方案是,过滤出元素第一次出现的位置和现在位置是否相等,不等说明该元素是重复的元素
    function unique() {
    if (!Array.isArray(arr)) {
    console.log("当前的不是数组");
    return;
    }
    Array.prototype.filter.call(arr, (item, index) => {
    return arr.indexOf(item) === index;
    })
    }
    //3, 将数组进行排序,相邻的数据不能相等
    function unique() {
    if (!Array.isArray(arr)) {
    console.log("当前的不是数组");
    return;
    }
    var arr = arr.sort();
    let res = [];
    for (var i = 0; i < arr.length; i++) {
    if (a[i] !== arr[i - 1]) {
    res.push(a[i]);
    }
    }
    return res;
    }
    //4.利用对象的属性进行的处理
    function unique() {
    if (!Array.isArray(arr)) {
    console.log("当前的不是数据");
    }
    let obj = {};
    let res = [];
    for (let i = 0; i < arr.length; i++) {
    if (!obj[arr[i]]) {
    res.push(arr[i]);
    obj[arr[i]] = 1;
    }
    }
    return res;
    }

    //5,使用es6属性去重,把其他对象转成数组,用解构字符和set
    function unique() {
    if (!Array.isArray(arr)) {
    console.log("当前不是数组");
    return;
    }
    return [...new set(arr)]
    }
    // 6,Array.form 对于对象Set Map Array 进行解构
    function unique() {
    if (!Array.isArray(arr)) {
    console.log("当前不是数组");
    }
    return Array.from(new set(arr));
    }

     pasting

    // spy-debugger
    // 1, 函数自动加一
    var getId = (function () {
    var i = 0;
    return function () {
    return i++;
    };
    })();
    console.log(getId());
    console.log(getId());
    // // 333=====
    function A() {
    var tmp = 0
    return function B() {
    return tmp++;
    }
    }
    var add = A()
    console.log('ddd' + add())
    console.log('ddd1' + add())
    // 偏函数

    function a(a) {
    return function (b) {
    return a + b
    }
    }
    var addOne = a(1)
    console.log(addOne(2));
    console.log(addOne(3));

    // 2,偏函数、柯里化函数的了解
    // https://www.cnblogs.com/zztt/p/4142891.html 实现柯里化的工作
    function G(val) {
    var tmp = 0
    function B(val) {
    tmp = tmp + val
    console.log('d' + tmp)
    return B;
    }
    return B;
    }
    var addE = G()
    console.log('222' + addE(1)(2)(3)(4))

    // 结果
    // 1
    // 3
    // 6
    // 10
    function add() {
    var args = Array.prototype.slice.call(arguments);
    var fn = function () {
    var arg_fn = Array.prototype.slice.call(arguments);
    return add.apply(null, args.concat(arg_fn));
    }
    fn.valueOf = function () {
    return args.reduce(function (a, b) {
    return a + b;
    })
    }
    return fn;
    }
    // console.log(sum); // Function
    console.log('add===' + add(1)) // 1
    console.log('dd====' + add(1, 2)(3)) //6
    console.log('ff===' + add(1)(2)(3)(4)(5)) // 15
    // 调用形式灵活,一次调用可输入一个或者多个参数,并且支持链式调用
    // bind reduce
    var obj = {
    value: 1,
    items: [
    {
    value: 2,
    items: [{
    value: 2,
    items: [{
    value: 4,
    items: []
    }]
    }]
    }
    ]
    }
    function a(obj) {
    var sub = 0
    for (key in obj) {
    if (key === 'value') {
    sub += obj[key]
    console.log(sub)
    } else {
    a(obj[key][0])
    }
    }
    console.log(sub += sub)
    // return sub += sub
    console.log('sub===' + sub)
    }
    console.log(a(obj));
    //4、 冒泡,快排,时间复杂度:
    // 5、线性顺序存储,链式存储结构有什么的区别

    https://www.cnblogs.com/webFrontDev/p/3865719.html

    1、堆

      

    3,二叉树 总结

     

    4,斐波那契算法 

    /**
    * 斐波拉契数列算法书写,过多的重复计算
    */
    function fobonacci(n) {
    if (n === 0) return 0;
    if (n === 1) return 1;
    return fobonacci(n - 1) + fobonacci(n - 2);
    }
    // 从上往下看,时间复杂度为O(n)

    function fobonacci(n) {
    var arr = [0, 1];
    for (var i = 2; i <= n; i++) {
    arr[i] = arr[i - 1] + arr[i - 2];
    };
    return arr[n];
    }

     

     基础排序
     1,冒泡排序:
     function bubleSort(arr){
        var len=arr.length;
        for(var i=0;i<len-1;i++){
           for(var j=0; j<len-1-i;j++){
             if(arr[j]>arr[j+1]){
                var temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
             }
           }
        }
     }
     2,选择排序:
     function selectionSort(arr){
        var len=arr.length;
        var minIndex,temp;
        for(var i=0;i<len-i;i++){
          minIndex=i;
          for(var j=i+1;j<len;j++){
            if(arr[j]<arr[minIndex]){
              minIndex=j;
            }
          }
        }
        temp=arr[i];
        arr[i]=arr[minIndex]
        arr[minIndex]=temp
     }
     4,快速排序:
     function quickSort(arr){
        if(arr.length<=1){
          retrun arr; // 递归出口
        }
        var left=[],
        right=[],
        current=arr.splice(0,1)
        for(let i=0;i<arr.length;i++){
            if(arr[i]<current){
              left.push(arr[i])
            }else{
              right.push(arr[i])
            }
        }
      return quickSort(left).concat(current,quickSort(right))
     }
  • 相关阅读:
    Java中IO软件包的详细介绍
    Java中IO软件包的详细介绍
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    Java中输入时IO包与Scanner的区别
    虚拟桌面技术的初步探讨
    C语言程序的内存布局
    用汇编语言给XP记事本添加“自动保存”功能 good
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/9728367.html
Copyright © 2011-2022 走看看