我们说一说Python的查找算法!

相信大家在面试开发岗和算法岗时,评委最喜欢问的就是:您能给我说一下查找和排序算法有哪些?今天咱们就说一说Python中最常用的查找算法,下期我们再推出排序算法。

首先要明白查找是查什么?我们希望能给定一个值,在待查找的范围内确认是否存在某一数据与指定值相同,返回该数据的索引。最常用的查找算法主要包括顺序查找和二分查找,顺序查找就是从待查找的数据中从第一元素开始,逐个将每个元素值与指定查找的值进行对比;如果比较到两者相同,则查找成功;如果到最后仍未找到,则查找失败。下面是顺序查找代码:

我们说一说Python的查找算法!

顺序查找_page_1

我们说一说Python的查找算法!

顺序查找_page_2

我们看到,顺序查找的优势就是适合数据量小,不要求数据本身有序,但当数据量较大时,查找效率低。而二分查找是指在有序数据集合中查找数据,默认从小到大排序,找出有序数据中的中间元素,由中间元素将源数据分为左右两部分。比较中间值与指定查找值的大小:1)如果相等,则查找成功;2)如果指定值比中间值小,则左侧继续重复查找;3)如果指定值比中间值大,则右侧继续重复查找。4)如此递归下去,直到成功找到或查找完整个数据集合为止。二分查找我们可以用循环的方式,也可以用递归的方式实现,首先是循环的方式:

我们说一说Python的查找算法!

二分查找(循环)_page_1

我们说一说Python的查找算法!

二分查找(循环)_page_2

接下来是递归模式:

我们说一说Python的查找算法!

二分查找(递归)_page_1

我们说一说Python的查找算法!

二分查找(递归)_page_2

我们看到二分查找的主要优势是每次查找其搜索范围减半,但要求数据本身有序。受制于水平的有限,这里基于Python这门语言将顺序查找和二分查找进行了简单的对比,各有优势。需要交流和切磋的读者朋友,请在评论区积极留言,欢迎关注头条号:杜哥说python。


分享到:


相關文章: