前端算法题 发表于 2017-03-17 | 分类于 前端开发 | js写冒泡排序1234567891011121314151617function bubbleSort(arr){ var arrLen = arr.length; if(arrLen<=1){ return arr; }else{ for(var i = 0;i < arrLen-1;i++){ for(var j = i+1;j<arrLen;j++){ if(arr[i]>arr[j]){ var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; }} js写快速排序123456789101112131415161718function quickSort(arr){ var arrLen = arr.length; if(arrLen<=1){ return arr; }else{ var left = []; var right = []; var basic = arr[0]; for(var i = 1;i < arrLen; i++){ if(arr[i]<basic){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quickSort(left).concat(basic,quickSort(right)); }} js写二分搜素123456789101112function binarySearch(data,dist,startIndex,endIndex){ var startIndex = startIndex || 0; var endIndex = endIndex || data.length-1; var midIndex = Math.floor((startIndex+endIndex)/2); if(dist == data[midIndex]){ return midIndex; }else if(dist < data[startIndex]){ return binarySearch(data,dist,startIndex,midIndex-1); }else{ return binarySearch(data,dist,midIndex+1,endIndex); }} 数组去重123456789101112131415161718192021function uniq1(arr){ var res = []; for(var i = 0;i < arr.length;i++){ if(res.indexOf(arr[i])==-1){ res.push(arr[i]); } } return res;}function uniq2(arr){ var json = {}; var res = []; for(var i = 0;i < arr.length;i++){ if(!json[arr[i]]){ json[arr[i]] = true; res.push(arr[i]); } } return res;} 对象深度克隆123456789101112131415161718function deepClone(obj){ var buf; if(obj instanceof Array){ buf = []; for(var i = 0; i < obj.length;i++){ buf[i] = deepClone(obj[i]); } return buf; }else if(obj instanceof Object){ buf = {}; for(var k in obj){ buf[k] = deepClone(obj[k]); } return buf; }else{ return obj; }} 斐波拉契方法1234567891011121314151617function fibonacci(count){ if(count<0){ return count; } if(count <= 1){ return 1; } var first = 1; var second = 1; var third = 0; for(var i = 2; i <= count;i++){ third = first + second; first = second; second = third; } return third;} 判断一个字符串中出现次数最多的字符,统计这个次数12345678910111213141516171819function getCharTimes(str){ var json = {}; for(var i = 0; i < str.length;i++){ if(!json[str.charAt(i)]){ json[str.charAt(i)] = 1; }else{ json[str.charAt(i)]++; } } var max = 0; var maxIndex = ''; for(var i in json){ if(json[i]>max){ max = json[i]; maxIndex = i; } } return "出现最多的字符是"+maxIndex+",次数为"+max;}