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

     1 import random
     2 
     3 # 二分查找--递归实现
     4 def binary_search(arr, left, right, num):
     5     if left > right:
     6         return -1
     7     mid = (left + right) // 2
     8     if arr[mid] < num:
     9         left = mid + 1
    10     elif arr[mid] > num:
    11         right = mid - 1
    12     else:
    13         return mid
    14     return binary_search(arr, left, right, num)
    15 
    16 
    17 # 二分查找非递归实现
    18 def binary_chop(arr, data):
    19     n = len(arr)
    20     first = 0
    21     last = n - 1
    22 
    23     while first <= last:
    24         mid = (last + first) // 2
    25         if arr[mid] > data:
    26             last = mid - 1
    27         elif arr[mid] < data:
    28             first = mid + 1
    29         else:
    30             return mid
    31     return -1
    32 
    33 if __name__ == '__main__':
    34     arr = [11, 32, 51, 21, 42, 9, 5, 6, 7, 8]
    35     print(arr)
    36     arr.sort()
    37     print(arr)
    38 
    39     num = random.randint(0, 52)
    40     print('要查找的数:', num)
    41     res = binary_search(arr, 0, len(arr) - 1, num)
    42     if -1 == res:
    43         print('未找到!')
    44     else:
    45         print('找到了,索引', res)
    46     num = arr[random.randint(0, len(arr))]
    47     print('要查找的数:', num)
    48     res = binary_search(arr, 0, len(arr) - 1, num)
    49     if -1 == res:
    50         print('未找到!')
    51     else:
    52         print('找到了,索引', res)
    53 
    54     print('*********************')
    55     print('二分查找非递归实现')
    56     num = random.randint(0, 52)
    57     print('要查找的数:', num)
    58     res = binary_search(arr, 0, len(arr) - 1, num)
    59     if -1 == res:
    60         print('未找到!')
    61     else:
    62         print('找到了,索引', res)
    63     num = arr[random.randint(0, len(arr))]
    64     print('要查找的数:', num)
    65     res = binary_search(arr, 0, len(arr) - 1, num)
    66     if -1 == res:
    67         print('未找到!')
    68     else:
    69         print('找到了,索引', res)
  • 相关阅读:
    两个服务器上SQLServer实例之间配置Service Broker示例
    处理数据库镜像问题的一个案例
    oracel修改密码
    Oracle报错
    如何创建ORACLE大文件表空间
    创建、删除表空间
    oracle中新建用户和赋予权限
    非常全的VsCode快捷键
    VS Code常用快捷键
    启动Weblogic问题集锦
  • 原文地址:https://www.cnblogs.com/yixiu868/p/11763450.html
Copyright © 2011-2022 走看看