我們說一說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。


分享到:


相關文章: