第一次学习总结

斐波那契算法

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;

posted @ 2020-09-19 23:34  我来打题了  阅读(93)  评论(0编辑  收藏  举报