快速网站备案多少钱,长沙房地产网站建设,网站建设公司做网站要多少费用,建设工程信息网官网入口查询Python实现二分查找为什么需要二分查找如果查找1-100内任意一个数字#xff1f;顺序查找(简单查找)从1开始或者100倒着来进行查找最快只需要一次#xff0c;但是最慢则需要一百次#xff0c;差距相当大大O表示法为 O(n)二分查找每次从中间进行查找#xff0c;先从50#x…Python实现二分查找为什么需要二分查找如果查找1-100内任意一个数字顺序查找(简单查找)从1开始或者100倒着来进行查找最快只需要一次但是最慢则需要一百次差距相当大大O表示法为 O(n)二分查找每次从中间进行查找先从50再判断大还是小再从75或者25进行查找依次类推由于每次都会排除一般的数字所以最慢也只需要7次log2 n次大O表示法为O(log n)要求必须是有序的情况从上面的例子可以看出来在有序的情况下二分查找的效率是很高的大O表示法大O表示法是一种比较特殊的表示法指出了算法的消耗时间速度主要可以表示两种算法之间时间消耗的不同增速小明要准备去北京玩为了更好的准备小明提前准备了100套线路方案然后准备用程序验证那种方案更加方便省时间如果使用简单查找的话进行验证假设一套方案需要一秒钟那么100套就需要100毫秒(O(n)而使用二分查找的话只需要7毫秒(O(log n)这就整整差了十多倍的时间这仅仅只是100套如果是一亿套方案呢简单查找时间就会更久, 由此我们可以根据大O表示法比较两个算法直接的时间增量速度以此判断哪个算法更加便捷python代码实现二分查找def BinarySearch(list1, num):min 0 # 最小的下标max len(list1) - 1 # 最大的下标i 0while True:i 1mid (max min) // 2 # 中间的下标每次向下取整if num list1[mid] :min mid 1 # 小于需要的猜的数则将最小下标变为中间的又因为中间的已经猜过所以要加1elif num list1[mid] :print(找到数据)print(一共查找%d次%i) breakelse :max mid - 1 # 大于需要的猜的数则将最大下标变为中间的又因为中间的已经猜过所以要减1if __name__ __main__:list1 [i for i in range(0,100)]num 5BinarySearch(list1, num)作者python_LiuYi链接https://www.jianshu.com/p/af69c01375ce