多语言展示
当前在线:1661今日阅读:176今日分享:34

[Python3算法(2)] 比较简单查找与二分查找[TZZ]

大家好!今天我给大家介绍一下“二分查找与简单查找的性能问题”。简单查找是性能最差但实现最简单的查找算法(写程序时会习惯性使用)。与二分查找算法不同的是,它不要求输入列表是有序的。如果您觉得这篇教程有帮助,请为我投上宝贵的一票(顺便求个关注),谢谢!32PyCharm安装教程[TZZ]
工具/原料

已安装PyCharm 2017.3(或以上版本)软件;

方法/步骤
1

启动PyCharm软件,新建一个名为“AlgorithmDemo2”的“Pure Python项目”,然后向新创建的项目中添加一个名为“main”的Python文件;

2

在“main.py”文件中,分别定义10个元素、100个元素和10000个元素的列表。然后,为这3个列表填充自然数;

4

继续向“main.py”文件中添加测试linear_search函数的代码,然后调试运行程序。在测试代码中,采用了一个列表和一个字典将最初定义的3个测试列表关联起来。然后通过循环执行所有列表最坏情况下的查找任务;

5

当程序启动之后,在弹出的Console窗口中,可以见到每个列表的测试输出信息。随着列表长度的增加,最坏情况下,简单查找次数也会线性增加;

6

关闭Console窗口返回到“main.py”文件中,继续定义一个二分查找函数“binary_search”。该函数中也同时返回了查找的进行次数;

7

继续向“main.py”文件中添加“使用binary_search函数查找3个列表中最大元素”的测试代码。然后调试运行程序。在弹出的Console窗口中,可以见到二分查找算法在同样情况下,比简单查找使用查找次数要少得多。尤其是在搜索列表急剧增大时,差别更明显;

8

通常采用大O表示法来衡量算法的快慢,其表示形式为“O(x)”。此表示法表示的仅仅是算法在处理n个数据时,最坏情况下的操作数(执行某些操作的总次数,比如查找次数)(大O时间的单位可以理解为“次数”,并非传统的“秒”之类的时间单位)。另外,在实际情况下,该表示法对应的也只是一个近似值。如果需要估算代码的执行总时间,需要根据指令执行时长和单次操作的代码条数进行估算;

9

对于简单查找而言,其大O时间为“O(n)”。而对于二分查找而言,其大O时间则为“O(logn)”(这里的logn是以2为底的对数)。显然,二分查找的速度比简单查找要快得多。两种算法的比较就介绍到这里了,Enjoy!

推荐信息