zoukankan      html  css  js  c++  java
  • python基础--二分查找

    二分法算法代码(不用递归,春算法)

     1 lst=[1,2,3,4,5,6,7,8,9,10,62,87,95,410,456,567,894,999]
     2 n=894
     3 left = 0
     4 right = len(lst)-1
     5 count=0
     6 while left<=right:
     7     middle = (left+right)//2
     8     if n<lst[middle]:
     9         right=middle-1
    10     elif n>lst[middle]:
    11         left=middle+1
    12     else:
    13         print("计算了%d次"%count)
    14         print("n的位置在",middle)
    15         break
    16     count+=1
    17 else:
    18     print("不存在")
    View Code

    二分算法递归1

     1 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 62, 87, 95, 410, 456, 567, 894, 999]
     2 
     3 
     4 def binary_search(left, right, n):
     5     middle = (left + right) // 2
     6     if left > right:
     7         return -1
     8     if n > lst[middle]:
     9         left = middle + 1
    10     elif n < lst[middle]:
    11         right = middle - 1
    12     else:
    13         return middle
    14     return binary_search(left, right, n)
    15 
    16 
    17 print(binary_search(0, len(lst) - 1, 45))
    View Code

    二分算法递归2

     1 lst=[1,2,3,4,5,6,7,8,9,10,62,87,95,410,456,567,894,999]
     2 def binary_search(lst,n):
     3     left = 0
     4     right = len(lst)-1
     5     mid = (left+right)//2
     6     if right <=0:
     7         print("不存在")
     8         return -1
     9     if n>lst[mid]:
    10         lst = lst[mid+1:]
    11     elif n<lst[mid]:
    12         lst = lst[:mid]
    13     else :
    14         print("存在")
    15         return -1
    16     binary_search(lst,n)
    17 binary_search(lst,1000)
    View Code
  • 相关阅读:
    使用ServiceLoader辅助责任链模式
    聊聊ThreadLocal
    Log4J
    Scalable IO in Java
    MySQL的索引
    Git的操作与理解
    阿里校招内推总结
    Executor框架的简要分析
    Java 8 中的ConcurrentHashMap源码分析
    从C#到Swift,Swift学习笔记
  • 原文地址:https://www.cnblogs.com/-Aqiu/p/13060700.html
Copyright © 2011-2022 走看看