Wills's blogs

前端算法题

js写冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function 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写快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function 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写二分搜素

1
2
3
4
5
6
7
8
9
10
11
12
function 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);
}
}

数组去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function 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;
}

对象深度克隆

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function 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;
}
}

斐波拉契方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function 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;
}

判断一个字符串中出现次数最多的字符,统计这个次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function 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;
}