第一次学习总结
斐波那契算法
Fibonacci数列的数学表达式:
F(n) = F(n-1) + F(n-2)
F(1) = 1
F(2) = 1
它的递归解法:
long fib1(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return fib1(n-1) + fib1(n-2);
}
}
它的迭代解法:
long fib3 (int n)
{
long x = 0, y = 1;
for (int j = 1; j < n; j++)
{
y = x + y;
x = y - x;
}
return y;
}
二分搜索算法:
利用数组长度n,我们取得刚开始数组的起始位置left和结束位置right,当left<=right时(也就是数组不为空时),进行如下算法
(1)当arr[mid]=want_find时,找到则返回1
(2)当arr[mid]<want_find时,说明目标元素在经由mid分割的右区间,故将区间起始位置left赋值为mid+1
(3)当arr[mid]>want_find时,说明目标元素在经由mid分割的左区间,故将区间结束位置right赋值为mid-1
若数组为空,即代表找不到,返回0
代码实现:
int mid;
int start = 0;
int end = srcArray.length - 1;
while (start <= end) {
mid = (end - start) / 2 + start;
if (key < srcArray[mid]) {
end = mid - 1;
} else if (key > srcArray[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;