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