1、启动PyCharm软件,新建一个名为“AlgorithmDemo5”的“Pure Python项目”,然后向项目中添加一个名为“main.py”的Python文件(具体步骤请参考引用教程);
2、在main.py文件中定义一个“binary_search_val_asc函数”,毋队末哎它需要传入一个升序排序的列表、指示该列表中子列表的起始索引位置和需要查找值。该函数采用递归方式实现二分查找过程,其查找过程与普通的二分查找类似,仅仅是在处理子列表时采用了递归调用。另外,需要注意子列表是否为空的检测,它是在调用下次递归之前进行的;
3、继续在main.py文件中定义一个以递归方式实现的二分查找函数binary_search_val_dec。与前一个函数不同的是,它需要一个降序排列的列表作为参数。其内部实现中,选择子列表的规则与前一个函数正好相反,但是基线条件相同;
4、继续在main.py文件中定义二分查找函数binary_search_rec。该函数封装了前两个函数的功能,其调用接口更加的简洁;
5、在main.py文件中添加二分查找函数的测试代码。在这份代码中,定义了一个测试列表,然后打印该列表以及其升序排列后的列表。梓脶阗擗最后,采用for循环,通过binary_search_rec函数从测试列表中查找从-10~10的值,并输出查找结果;
6、测试代码编写完毕后,调试运行程序。在弹出的控制台窗口中,可以见到打印的查找结果。与之前打印的升序列表对比,人工检测算法是否处理正确;
7、关闭控制台窗口返回到main.py文件中,继续添加从降序列表中二分查找元素的测试代码,然后调试运行程序;
8、在弹出的控制台窗口中,可以见到输出的查找结果。通过人工将结果与降序列表核对,可以确定算法是否执行正确;
9、递归二分查找算法代码的实现要点是检测子列表是否为空,即子列表索引的开始索引大于结束索引或者结束索引小于开始索引。另一个小技巧就是用一个接口更简洁的函数充当外观函数,这样用户使用起来会更方便。Enjoy!