[Python3算法(1)] 二分查找算法[TZZ]
1、启动PyCharm软件,新建一个名为“AlgorithmDemo1”的“Pure Python项目”。项目创建完毕后,向项目中添加一个名为“main”的Python文件;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/f385f29959430401525f69f7d66b04d14829053a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/059057299a883913c9449b5b26bcbe2f46707c3a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/e57a258602214f57bff7240e732064fb970b733a.jpg)
2、在“main.py”文件中,根据“二分查找算法”的描述,实现一个名为“binary_search_asc”的二分查找函数。在该函数中,通过while循环和调整下次搜索列表的起始索引实现下一次二分查找任务(注:搜索左侧或右侧列表实际只要改变列表下标即可);
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/974a2f21056104a36148f41b63d7592ae2ef6b3a.jpg)
3、继续向“main.py”文件中添加测试代码。在这份代码中,随意定义了一个列表,然后将其按升序排序,随后调用binary_search_asc函数查找列表中的每个元素。代码编写完毕后,调试运行程序。在弹出的“Console”窗口中(将Console面板设置为“Windowed Mode”),可以见到输出的查找结果。可以与原列表比对确定代码是否编写正确;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/e1390a31dfb6326c6ac7ee7a89532f632285603a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/e177fc9147e833e07fd34ab630ea3e863148593a.jpg)
4、关闭“Console”窗口返回到“main.py”文件中,继续添加“通过二分查找法在testList列表中查找从-10到10的元素位置”。代码编写完毕后,调试运行程序。在弹出的Console窗口中,可以见到输出的查找结果;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/6002c9d4483104ebb90628ba092b74ee1d324e3a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/8db0c6a72633488497423c99ddee7b7f870e453a.jpg)
5、关闭Console窗口,返回到“main.py”文件中,定义一个名为“binary_search_dec”的二分查找函数。与“binary_search_asc”函数不同的是,该函数需要一个已降序排序的列表作为输入。在实现此函数时,需要注意下一个搜索列表的起始索引必须设置正确;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/e4b5e2f5ee0d3acece7605de87e265e7350fbb3a.jpg)
6、继续添加binary_search_dec函数的测试代码,然后调试运行程序。在弹出的Console窗口中,可以见到二分查找的结果列表;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/65390a23beb9763e4c63cc636ad06de89b61b03a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/40d2d0e8b004541ba6ae8593869a310e1699a63a.jpg)
7、关闭Console窗口返回到“main.py”文件中,继续定义一个“binary_search”函数,该函数内置了排序功能,因此,可以直接传入一个未排序的列表。该函数中除了排序代码之外,其他代码均与binary_search_asc函数相同;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/e86ba4b842406afe43b586701eee41c1b6279f3a.jpg)
8、继续添加binary_search函数的测试代码,然后调试运行程序。在弹出的Console窗口中,可以见到正确的查找结果列表;
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/ad121888912ca5ca5549e7fd8bfc77f7990e943a.jpg)
![[Python3算法(1)] 二分查找算法[TZZ]](https://exp-picture.cdn.bcebos.com/5e615d715fdb36202b9bba3cabc5260f89358d3a.jpg)
9、至此,二分查找算法的代码已编写完毕!下一遍,我们一起研究一下“简单查找”和“二分查找”的快慢问题。Enjoy!