前端常见算法整理

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)这些数组。

posted on 2016-10-31 17:37  薛将军  阅读(605)  评论(0编辑  收藏  举报

导航