//遞歸算法
function factorial(num){
if (num <= 1){
return 1;
} else {
return num * arguments.callee(num-1);
}
}
// arguments.callee指向當前運行函數指針
//二分查找
function binarySearch(arr, data) {
var end = arr.length - 1,
start = 0;
while (start <= end) {
var middle = Math.floor((start + end) / 2);
if (arr[middle] > data) {
end = middle - 1;
} else if (arr[middle] < data) {
start = middle + 1;
} else {
return middle;
}
}
return -1;
}
var arr = [1, 2, 3, 4, 5, 6];
console.log(binarySearch(arr, 2));
//冒泡排序算法
function mySort(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
var arr = [1, 2, 8, 3, 4, 1];
console.log(mySort(arr));
//數組去重 也可以使用ES6 Set集合,然后Array.from()轉數組
function unique1(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var arr1 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique1(arr1));
function unique2(arr) {
var hash = {},
newArr = [];
for (var i = 0; i < arr.length; i++) {
if (!hash[arr[i]]) {
hash[arr[i]] = true;
newArr.push(arr[i]);
}
}
return newArr;
}
var arr2 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique2(arr2));
function unique3(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length; j++) {
if (arr[i] === arr[j] && i != j) {
arr.splice(i, 1);
}
}
}
return arr;
}
var arr3 = ['b', 'b', 'a', 1, 3, 4, 4];
console.log(unique3(arr3));
//統計出現最多字符數
function getMax(str) {
var hash = {},
maxstr, max = 1;
for (var i = 0; i < str.length; i++) {
if (!hash[str[i]]) {
hash[str[i]] = 1;
} else {
hash[str[i]]++;
}
if (hash[str[i]] > max) {
max = hash[str[i]];
maxstr = str[i];
}
}
return maxstr;
}
var str = 'abcdeffggghhhhiiiii';
console.log(getMax(str));