首页 > 其他分享 >二分法

二分法

时间:2023-03-28 19:22:24浏览次数:46  
标签:target 987 二分法 num l1 print

关于二分法:

二分法使用要求
待查找的数据集必须有序

二分法的缺陷
针对开头结尾的数据 查找效率很低

常见算法的原理以及伪代码
二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)

现在咱有个需求查找列表中某个数据值

l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]

其实我们很多方法解决这个需求

  1. for循环的话训话次数太多影响效率
  2. 二分法不断对数据集进行二分切做割

但是接下来用以上提到的两种方法实现咱们得需求吧!!!!

for循环

l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
for i in l1:
    if i == 987:
        print('对了')
    else:
        print('不是')

二分法

l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]

def get_target_num(l1, target_num):
    if len(l1) == 0:
        print('sry, can not find')
        return
    middle_index = len(l1) // 2
    if target_num > l1[middle_index]:
        right_l1 = l1[middle_index + 1:]
        print(right_l1)
        return get_target_num(right_l1, target_num)
    elif target_num < l1[middle_index]:
        left_l1 = l1[:middle_index]
        print(left_l1)
        return get_target_num(left_l1, target_num)
    else:
        print('good for you')


get_target_num(l1, 987)

标签:target,987,二分法,num,l1,print
From: https://www.cnblogs.com/almira998/p/17266386.html

相关文章

  • 算法—二分法详解
    二分法详解目录二分法详解1.二分法2.引论:猜数游戏3.整数域二分1、在单调递增序列中找x或者x的后继2、在单调递增序列中查找x或者x的前驱3.简易二分模板4.浮点数二......
  • python实现一个二分法
    #################      ############################### ......
  • 二分法:区间的重要性(初探)
    哈喽,我是404,正在努力提升代码能力的未来女程序员(笑),这是我的第一篇博客,接下来会记录我的学习之路到我力扣完全可以手撕,废话不多说,正文开搞!通过初见力扣经典题目704.二......
  • python实现一个二分法
    #################                 ############################### #########################......
  • 二分法求三次方根
      #include<iostream>usingnamespacestd;intmain(){doublen;cin>>n;intl=1,r=n;while(l+1e-7<r){doublemid=(l+r)/2;if(mid*mid*mid>=n){r=mid;}elsel......
  • python 二分法查找
    二分查找(搜索)是一种在有序列表中查找某一特定元素的搜索算法。二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是......
  • 二分法查找
    原理一个数据有升序的数组,每次取中间元素比较,如果大于需要查找的元素,则去后面数据,中间数据作为起点最后数据作为终点再定中间数据比较。如果小于需要查找的数据,则取前面......
  • 二分法
      #include<iostream>usingnamespacestd;constintN=1e5+10;inta[N],st[N];intnum=0;intmain(){intn,q;cin>>n>>q;for(inti=1;i<=n;i++){cin>>a[i];......
  • 今日学习之二分法排序
    二分法排序主要思想是在数组中截取一个数center,然后将数组分成leftArr、rightArr两部分,其中leftArr全部小于center,rightArr全部大于center(这里没有考虑有重复值的情况),最后......
  • Leetcode——二分法bisect_left,bisect_right
    !前提——列表有序case1如果列表中没有元素x,那么bisect_left(ls,x)和bisec_right(ls,x)返回相同的值,该值是x在ls中“合适的插入点索引,使得数组有序”。此时,ls[index2]......