zoukankan      html  css  js  c++  java
  • 算法:二分查找(python版)

    #!/usr/bin/env python
    #coding -*- utf:8 -*-
    #二分查找
    #时间复杂度O(logn)
    #一个时间常量O(1)将问题的规模缩小一半,则O(logn)
    import random def binary_search(arraya, x, N): low = 0 high = N-1 notfound = -1 while low<=high: #这里是//2,写一个/会出错,因为python3中3/2=1.5,3//2=1 middle = (low+high)//2 if(arraya[middle] < x): low = middle + 1 #注意这里是elif,一开始我写成了if会出错 elif(arraya[middle] > x): high = middle - 1 else: return middle return notfound if __name__=='__main__': n = int(input("所要生成数组的长度:")) a = [] for i in range(n): x = random.choice(range(100)) a.append(x) #这里排序就用内置的吧! #列表可以被修改 a.sort() print("生成的数组(从小到大):",a) b = int(input("想要查找的x值为:")) if(binary_search(a, b, n)==-1): print("所要查找的x不在该数组里!") else: print("x的下标为", binary_search(a, b, n))
  • 相关阅读:
    C/C++筛选法算素数
    JAVAFX-5事件总结
    JAVAFX-5 开发应用
    JAVAFX-4 开发应用
    JAVAFX-3 开发应用
    JAVAFX-1 开发应用
    JAVAFX-2 开发应用
    Swing 100行画图示例
    Java的Json解析包FastJson使用
    杨辉三角
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6059706.html
Copyright © 2011-2022 走看看