二分查找(折半查找)
function binSearch(arr,data){//折半查找,也叫二分查找
var upperBound=arr.length-1;
var lowerBound=0;
while(lowerBound<=upperBound){//未遍历完
var mid=Math.floor((lowerBound+upperBound)/2);
document.write("当前中点为:"+mid+'<br>');//记录选中的中点
if(arr[mid]<data){
lowerBound=mid+1;
}else if(arr[mid]>data){
upperBound=mid-1;
}else{
return mid;
}
}
return -1;
}
binSearch([1,2,43,4,77,34,177,234,45,222],234) // 7
水仙花数
for(var i = 100 ; i <= 999 ; i++){
//得到这个i的每一个位
var hundreds = parseInt(i / 100);
var decade = parseInt(i % 100 / 10);
var unit = i % 10;
//验证是否符合水仙花数的特点
if(Math.pow(hundreds,3) + Math.pow(decade,3) + Math.pow(unit,3) == i){
console.log(i);
}
}
判断是否为完全二叉树
找出只出现一次的数字
var onlyOne = function(nums) {
var result = 0;
for (var i = 0; i < nums.length; i++) {
result ^= nums[i]
}
return result;
}
console.log(onlyOne([1,2,3,1,3]))
斐波那契数列
//递归
function fib(num){
if(num < 3){
return 1
}else{
return fib(num-1) + fib(num-2)
}
}
fib(6) //8
fib(10) //55
[ 1,1,2,3,5,8,13,21,34,55 ]
//普通
//1.定义三个变量,然后两个初始化值。第三个作为存储使用
var temp;
var num1 = 1;
var num2 = 1;
//2.先把第二个变量存储进入第三个变量汇总,第二个变量重新赋值成为第一个和第二个之和
for(var i=1;i<=10;i++){
temp = num2;
num2 = num1 + num2;
//3.把存储好的第三个变量赋值给第一个变量。
num1 = temp;
//4.执行10次。(因为前两项不需要计算,所以只需要执行10次)
}
alert(num2);
网友评论