• 前端常见算法整理


    1.回文数

    function isPalindromic(str){
      return str == str.spilt("").reverse().join("");
    }

    2.数组去重

    function unique(arr){
        var tempArr = [];
        for(var i = 0; i < arr.length; i++;){
            if(tempArr.indexOf(arr[i]) == -1){
                tempArr.push(arr[i]);
            }
        }      
        return tempArr;  
    }

    3.字符串中出现最多次数的字符和次数

     1 function maxCount(str){
     2         var obj = {};
     3         for(var i = 0; i < str.length; i++){
     4             var char = str.charAt(i);
     5             if(!obj[char]){
     6                 obj[char] =1;
     7             }else{
     8                 obj[char]++;
     9             }
    10         }
    11         console.log(obj)
    12         var max = 0;
    13         for(var key in obj){
    14             if(max < obj[key]){
    15                 max = obj[key];
    16                 console.log("出现最多字符是:" + key)
    17                 console.log("出现的次数:" + max)
    18             }
    19         }
    20     }

    4.冒泡排序

     1 function bubbleSort(arr){
     2     for(var i = 0; i< arr.length; i++){
     3         for(var j = i + 1; j < arr.length; j++){
     4             if(arr[i] > arr[j]){
     5                 var temp = arr[i];
     6                 arr[i] = arr[j];
     7                 arr[j] = temp;
     8             }
     9         }
    10     }
    11     return arr;
    12 }

    5.不利用中间变量交互两个

    function swap(a,b){
        b = b - a;
        a = a + b;//此时a=b
        b = a - b;
        return [a,b];
    }

    6.斐波那契数组

     1     function fibonacci(n){
     2         var fibArr = [];
     3         var i = 0;
     4         while(i<n){
     5             if(i<=1){
     6                 fibArr.push(i);
     7             }else{
     8                 fibArr.push(fibArr[i-1] + fibArr[i-2]);
     9             }
    10             i++;
    11         }
    12         return fibArr;
    13     }

    7.生成随机长度字符串

     1 function randomStr(len) {  
     2   var str = 'abcdefghijklmnopqrstuvwxyz9876543210';
     3   var tmp = '',
     4       i = 0,
     5       l = str.length;
     6   for (i = 0; i < n; i++) {
     7     tmp += str.charAt(Math.floor(Math.random() * l));
     8   }
     9   return tmp;
    10 }

    还有一些其他算法,先总结到这

    11月1日

    今天又看到了快速排序,写下来:

     1 function quickSort(arr){
     2     if(arr.length == 0){
     3         return [];
     4     }
     5     var left = [];
     6     var right = [];
     7     var temp = arr[0];
     8     for(var i = 1,len = arr.length; i < len; i++){
     9         if(arr[i] < temp){
    10             left.push(arr[i]);
    11         }else{
    12             right.push(arr[i]);
    13         }
    14     }
    15     return quickSort(left).concat(temp,quickSort(right))
    16 }

    思路就是分成左边数组和右边数组,把第一个拿出来作为参考,剩下的元素比第一个小的就放到左边数组,比第一个元素大的就放到右边数组,然后再对左右两边数组进行递归,最后合并(concat)这些数组。

  • 相关阅读:
    【就业】腾讯VS百度
    MySQL基础知识
    PHP读取远程文件并保存
    【GTK3.0】背景设置
    【GTK】信号量(signal)大全
    c# 调用win32 api
    PHP写窗体程序
    一个苏州IT人的5年挨踢经历面试篇(之二)
    【c++ Primer 】 4.10复习题 12题(int)、(int&)和(int*)
    线段树技巧
  • 原文地址:https://www.cnblogs.com/xuejiangjun/p/6016690.html
Copyright © 2020-2023  润新知