zoukankan      html  css  js  c++  java
  • 二分法

    需求:有一个按照从小到大顺序排列的数字列表 需要从该数字列表中找到我们想要的那个一个数字 如何做更高效???

    nums=[-3,4,7,10,13,21,43,77,89]
    find_num=10

    # 若列表无序可使用sort方法
    nums=[-3,4,13,10,-2,7,89]
    nums.sort()
    print(nums)

    方案一:整体遍历效率太低

    for num in nums:
        if num == find_num:
            print('find it')
            break
    # 若列表中存在元素过多该方法效率极低

    方案二:二分法

    def num_seach(find_num, l):
        if len(l) == 0:
            print('这个数不存在!')
            return
        mid_index = len(l) // 2
        if find_num < l[mid_index]:
            l = l[:mid_index]
            num_seach(find_num, l)
        elif find_num > l[mid_index]:
            l = l[mid_index + 1:]
            num_seach(find_num, l)
        else:
            print('找到这个数了!')


    num_seach(34, l1)

  • 相关阅读:
    oracle数据库中的单行函数
    Oracle数据库的基本语句
    oracle数据库安装的注意事项
    第一个自动化脚本
    负载均衡__笔记
    计算机名词解释
    开发规范__笔记
    索引_笔记
    主从复制_笔记
    Eclipse Git和sourceTree用法
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12577107.html
Copyright © 2011-2022 走看看