程序设计刷题笔记-第一篇

时间优化篇

今天刷题的过程中遇到一道需要优化算法、缩短运行时间的题。解决此题就需要用到二分搜索,先说一下什么是二分搜索,二分搜索可以将O(n)的时间缩短到O(logn)。

具体实现方式:

比如从一个口袋中拿出四张卡片,其和为m时即算获胜,问是否存在抽取四次和为M的组合存在,暴力方法是直接四层循环整个过一遍,其需要的时间是O(n4),当数组很大上百上千时,则会导致浪费大量的时间,此时将思路改为查找的值为m-ka-kb-kc为x。预先把数组k排好序,然后看k中央的数字,可知

~如果它比x小,x只可能在它的后面半段;

~如果它比x大,x只可能在它的前面半段;

原理:

二分搜索算法每次将候选区间减小至原来的一半。因此,要判断长为n的有序数组k中是否包含x,只要反复执行log2 n 次就完成了。其复杂度是O(logn)时间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值