JavaScript 常用算法
1.排序算法
(1)冒泡排序,冒泡排序其实就是通过比较相邻位置的元素大小,如果左边比右边大,就交换位置,继续比较,实际上就是每轮比较都得出一个最大值,然后通过多伦比较得出。
function bubbleSort(arr){ for(var i=1;i<arr.length;i++){ for(var j=0;j<arr.length-i;j++){ var temp; if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } return arr; }
(2)快速排序,我们选定一个数,然后比它小的都放在它左边,大于等于它的都放在它右边,那么这个时候对这个数来讲他的位置已经排到了正确的地方了,接下 来要做的就是在它的左右两边分别再进行类似操作。
function quickSort(arr,l,r){ var i,j,x; if(l<r){ i=l; j=r; x=arr[i]; while(i<j){ while(i<j&&arr[j]>=x){ j–; } if(i<j){ arr[i]=arr[j]; } while(i<j&&arr[i]<x){ i++; } if(i<j){ arr[j]=arr[i]; } } arr[i]=x;
//递归调用
quickSort(arr,i+1,r);
quickSort(arr,l,i-1);
}
return arr;
}
2.阶段乘法
function factorialize(num) { var result = num; if (num < 0) { return -1; } else if (num === 0 || num === 1) { return 1; } else { while (num > 1) { num–; result *= num; } } return result; }
3.回文字符串判断, 字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)
function palindrome(str) { // 删除字符串中不必要的字符 var re = /[W_]/g; // 将字符串变成小写字符 var lowRegStr = str.toLowerCase().replace(re, ”); // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome if (lowRegStr.length === 0) { return true; } // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome if (lowRegStr[0] !== lowRegStr[lowRegStr.length – 1]) { return false; } else { return palindrome(lowRegStr.slice(1, lowRegStr.length – 1)); } }
4.翻转字符串方法
(1)
function reverseString(str) { var tmp = “”; for (var i = str.length – 1; i >= 0; i–) { tmp += str.charAt(i); } return tmp; }
(2)
function reverseString(s) { var arr = s.split(”); var i = 0, j = arr.length – 1; while (i < j) { var t = arr[i]; arr[i] = arr[j]; arr[j] = t; i++; j–; } return arr.join(”); }
5.数组中最大差值
function getMaxProfit(arr) {
var minPrice = arr[0];
var maxProfit = 0;
for (var i = 0; i < arr.length; i++) {
var currentPrice = arr[i];
minPrice = Math.min(minPrice, currentPrice);
var potentialProfit = currentPrice – minPrice;
maxProfit = Math.max(maxProfit, potentialProfit);
}
return maxProfit;
}
6.随机指定长度字符串
function randomString(n) { var str = ‘abcdefghijklmnopqrstuvwxyz9876543210’; var tmp = ”; var l = str.length; for(var i = 0; i < n; i++) { tmp += str.charAt(Math.floor(Math.random() * l)); } return tmp; }