【python】数据结构与算法之二分查找
一、查找
在一組數(shù)據(jù)中找某一個特定項的算法過程
通常用來判斷某個特定項是否在一組數(shù)據(jù)中,最終返回True或False
常用的查找算法:順序查找、二分查找、樹表查找、哈希查找等
二、二分查找
二分查找又稱為折半查找,要求待查表為有序表
將表中間位置記錄的關鍵字與查找關鍵字比較,如果相等則比較成功;否則利用中間位置的記錄縮小區(qū)間,繼續(xù)查找縮小后的區(qū)間。
重復上面的步驟直到查找成功,或者子表不存在,則查找失敗
三、畫圖演示
例如查找6是否在數(shù)組中
1、找到中間值mid=len(nums)//2==5
2、索引為5時,值為9;比較nums[5]>6,可知目標值在nums[5]的左邊
3、將右游標移動,移動到mid-1的位置
4、找到中間值mid=len(nums)//2=2
5、索引為2時,值為4;比較nums[2]<6,可知目標值在nums[2]的右邊
6、移動左游標,移動到mid+1的位置
7、找到中間值mid=len(nums)//2=1
8、索引為1時,值為8;比較nums[1]>6,可知目標值在nums[2]的左邊
9、將右游標移動,移動到mid-1的位置
10、此時左游標和右游標重合
11、找到中間值mid=len(nums)//2=0
12、索引為0時,值為6;比較nums[1]=6,找到目標值,否則數(shù)組中沒有目標值
四、代碼塊
采用遞歸方法
時間復雜度為O(logn)
總結
以上是生活随笔為你收集整理的【python】数据结构与算法之二分查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【python】数据结构与算法—双端队列
- 下一篇: 【python】数据结构与算法之快速排序