一周学习总结9

二分查找

二分搜索是一种搜索算法,用于在排序数组中查找元素的位置。这种方法,总是在数组的中间搜索元素。时间复杂度为o(logN)。可以实现复杂问题的快速搜索。不过,该算法要求必须在一个连续递增或递减的范围内进行,所以在做题前要判断题目是否满足该条件。该算法的基本代码为:

while (low <= high)
{
        mid = low + (high - low);
        if(pd(mid) == x)
        {
            low = mid + 1;
            ans=mid;
        }
        else
            high = mid - 1;
}

根据不同的题目要求可以按照题意改变判断pd()函数的内容。

DFS与BFS

本周继续学习了dfs和bfs两种算法,感觉两种算法既相似又有不同的特点。dfs像是一个堆栈,先进后出,从底部不断向上遍历;而bfs则是一个队列,先进先出,从顶部向下一层层的遍历。

深度优先搜索是搜索数据所有顶点的递归算法。DFS把要遍历每个顶点分为来过或没来过两种状态。首先将最顶部的顶点放在堆栈的底部然后访问其相邻节点,之后再不断一步步地向“浅”的地方遍历其相邻节点,不断重复,直到找到解。

广度优先搜索也是一种递归算法,BFS也将每个顶点分为来过或没来过两种情况。首先将最顶部的顶点放在队列的里面。将队列的最前面的项目标记为已访问。添加该顶点的相邻节点到队列,寻找解。不断重复,直到队列为空。

两种搜索方法都要将已经访问过的节点进行标记,不同的是dfs在标记后会抹除标记然后搜索下一种情况,而bfs则不是。

以上是本周学习内容,想法暂不成熟,希望通过做题不断打磨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值