python学习写一个二分算法的程序

Posted 围岭山上的山文居士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习写一个二分算法的程序相关的知识,希望对你有一定的参考价值。

把之前学习的做一个小结。之前看二分查找法,只能是似而非地看懂大概。现在用这么多天的知识积累已经可以自己写了。

而且在算法书的基础上,把需要找的数字做一个人机互动操作。

另外,初步接触到了 __name__=="__main__"这块,也只初步了解了一个大概。在调试的时候,发现有这个语句就不会上下两段代码一起执行。原理现在尚不清楚,查了一下资料,似是而非,看后面能否深入了解。

另外,今天对return和print进行了比较详细的了解。我的理解是,语句中一旦有return,类似Break,后面的程序就不会再执行了。而print语句后面还会继续执行。这应该是最大的区别。

这是我写的第一段算法程序,在原来书本的基础上加入了很多中文人机互动,没想到一点点C++基础的我居然可以写算法程序。感谢这段时间来努力的自己!

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 # Author:show530
 4 
 5 
 6 def BinarySearch(list, item):
 7     low=0
 8     high=len(list)-1
 9     if item in list:
10         while True:
11             mid=int((low+high)/2)
12             if list[mid]==item:
13                 print(str(item)+"在数组里面的第"+str(mid)+"个位置")
14                 return
15             elif list[mid]<item:
16                 low=mid+1
17             elif list[mid]>item:
18                 high=mid-1
19     else:
20         print("没有这个数字")
21         return
22 
23 
24 if __name__ == "__main__":
25     arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
26     while True:
27         key = input("请输入你要查找的数字:")
28         if key == " ":
29             print("谢谢使用!")
30             break
31         else:
32             BinarySearch(arr, int(key))

 

以上是关于python学习写一个二分算法的程序的主要内容,如果未能解决你的问题,请参考以下文章

算法图解(二分查找)

算法:时间复杂度+二分查找法(Java/Go/Python)实现

Python算法-冒泡排序、线性和二分搜索

「算法笔记」一文摸秃二分查找

python基础学习-匿名函数+二分法(算法)

《算法竞赛进阶指南》学习总结 二分与三分