国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

手把手教你用 Python 實現(xiàn)查找算法

開發(fā) 后端 算法
查找數(shù)據(jù)的最簡單策略就是線性查找,它簡單地遍歷每個元素以尋找目標,訪問每個數(shù)據(jù)點從而查找匹配項,找到匹配項后,返回結(jié)果,算法退出循環(huán),否則,算法將繼續(xù)查找,直到到達數(shù)據(jù)末尾。線性查找的明顯缺點是,由于固有的窮舉搜索,它非常慢。

[[439902]]

本文介紹以下查找算法:

線性查找(Linear Search)

二分查找(Binary Search)

插值查找(Interpolation Search)

我們詳細了解一下它們各自的情況。

一. 線性查找

查找數(shù)據(jù)的最簡單策略就是線性查找,它簡單地遍歷每個元素以尋找目標,訪問每個數(shù)據(jù)點從而查找匹配項,找到匹配項后,返回結(jié)果,算法退出循環(huán),否則,算法將繼續(xù)查找,直到到達數(shù)據(jù)末尾。線性查找的明顯缺點是,由于固有的窮舉搜索,它非常慢。它的優(yōu)點是無須像其他算法那樣,需要數(shù)據(jù)排好序。

我們看一下線性查找的代碼:

  1. def LinearSearch(list, item): 
  2.     index = 0 
  3.     found = False 
  4.  
  5. # Match the value with each data element        
  6.     while index < len(list) and found is False
  7.         if list[index] == item: 
  8.             found = True 
  9.         else
  10.             index = index + 1 
  11.     return found 

現(xiàn)在,看一下代碼的輸出(見圖3-15)。

  1. list = [12, 33, 11, 99, 22, 55, 90] 
  2.  
  3. print(LinearSearch(list, 12)) 
  4.  
  5. print(LinearSearch(list, 91)) 

▲圖 3-15

需要注意的是,如果能成功找到數(shù)據(jù),運行LinearSearch函數(shù)會返回True。

  • 線性查找的性能:如上所述,線性查找是一種執(zhí)行窮舉搜索的簡單算法,其最壞時間復雜度是O(N)。

二. 二分查找

二分查找算法的前提條件是數(shù)據(jù)有序。算法反復地將當前列表分成兩部分,跟蹤最低和最高的兩個索引,直到找到它要找的值為止:

  1. def BinarySearch(list, item): 
  2.     first = 0 
  3.     last = len(list)-1 
  4.     found = False 
  5.  
  6.     while first<=last and not found: 
  7.         midpoint = (first + last)//2 
  8.         if list[midpoint] == item: 
  9.             found = True 
  10.         else
  11.             if item < list[midpoint]: 
  12.                 last = midpoint-1 
  13.             else
  14.                 first = midpoint+1 
  15.     return found 

輸出結(jié)果如圖3-16所示。

  1. list = [12, 33, 11, 99, 22, 55, 90] 
  2.  
  3. sorted_list = BubbleSort(list) 
  4.  
  5. print(BinarySearch(list, 12)) 
  6.  
  7. print(BinarySearch(list, 91)) 

▲圖 3-16

請注意,如果在輸入列表中找到了值,調(diào)用BinarySearch函數(shù)將返回True。

  • 二分查找的性能:二分查找之所以如此命名,是因為在每次迭代中,算法都會將數(shù)據(jù)分成兩部分。如果數(shù)據(jù)有N項,則它最多需要O(log N)步來完成迭代,這意味著算法的運行時間為O(log N)。

三. 插值查找

二分查找的基本邏輯是關(guān)注數(shù)據(jù)的中間部分。插值查找更加復雜,它使用目標值來估計元素在有序數(shù)組中的大概位置。

讓我們試著用一個例子來理解它:假設(shè)我們想在一本英文詞典中搜索一個單詞,比如單詞river,我們將利用這些信息進行插值,并開始查找以字母r開頭的單詞,而不是翻到字典的中間開始查找。一個更通用的插值查找程序如下所示:

  1. def IntPolsearch(list,x ): 
  2.     idx0 = 0 
  3.     idxn = (len(list) - 1) 
  4.     found = False 
  5.     while idx0 <= idxn and x >= list[idx0] and x <= list[idxn]: 
  6.  
  7. # Find the mid point 
  8.         mid = idx0 +int(((float(idxn - idx0)/( list[idxn] - list[idx0])) * ( x - list[idx0]))) 
  9.  
  10. # Compare the value at mid point with search value  
  11.         if list[mid] == x: 
  12.             found = True 
  13.             return found 
  14.  
  15.         if list[mid] < x: 
  16.             idx0 = mid + 1 
  17.     return found 

輸出結(jié)果如圖3-17所示。

  1. list = [12, 33, 11, 99, 22, 55, 90] 
  2.  
  3. sorted_list = BubbleSort(list) 
  4.  
  5. print(IntPolsearch(list, 12)) 
  6.  
  7. print(IntPolsearch(list,91)) 

▲圖 3-17

請注意,在使用IntPolsearch函數(shù)之前,首先需要使用排序算法對數(shù)組進行排序。

  • 插值查找的性能:如果數(shù)據(jù)分布不均勻,則插值查找算法的性能會很差,該算法的最壞時間復雜度是O(N)。如果數(shù)據(jù)分布得相當均勻,則最佳時間復雜度是O(log(log N))。

關(guān)于作者:伊姆蘭·艾哈邁德(Imran Ahmad) 是一名經(jīng)過認證的谷歌講師,多年來一直在谷歌和學習樹(Learning Tree)任教,主要教授Python、機器學習、算法、大數(shù)據(jù)和深度學習。他在攻讀博士學位期間基于線性規(guī)劃方法提出了名為ATSRA的新算法,用于云計算環(huán)境中資源的優(yōu)化分配。近4年來,他一直在加拿大聯(lián)邦政府的高級分析實驗室參與一個備受關(guān)注的機器學習項目。

 

本文摘編自《程序員必會的40種算法》,經(jīng)出版方授權(quán)發(fā)布。

 

責任編輯:武曉燕 來源: 大數(shù)據(jù)DT
相關(guān)推薦

2021-08-09 13:31:25

PythonExcel代碼

2022-10-19 14:30:59

2021-02-02 13:31:35

Pycharm系統(tǒng)技巧Python

2021-02-10 09:34:40

Python文件的壓縮PyCharm

2021-05-10 06:48:11

Python騰訊招聘

2021-03-23 09:05:52

PythonExcelVlookup

2015-07-15 13:18:27

附近的人開發(fā)

2017-10-29 21:43:25

人臉識別

2022-08-04 10:39:23

Jenkins集成CD

2017-10-27 10:29:35

人臉識別UbuntuPython

2021-02-04 09:00:57

SQLDjango原生

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2011-03-28 16:14:38

jQuery

2009-04-22 09:17:19

LINQSQL基礎(chǔ)

2021-04-01 09:02:38

Python小說下載網(wǎng)絡爬蟲

2018-12-29 09:38:16

Python人臉檢測

2021-05-17 21:30:06

Python求均值中值

2021-09-02 08:56:48

JavaBMIHashSet

2020-11-13 08:17:48

App(滑動切換)

2012-01-11 13:40:35

移動應用云服務
點贊
收藏

51CTO技術(shù)棧公眾號

日本视频久久久| 国产色产综合色产在线视频| 欧美午夜精品免费| 不卡中文字幕在线| 久久91精品| 欧美另类极品videosbestfree| 免费看一级大黄情大片| 亚洲视屏一区| 91高潮精品免费porn| 搞黄网站在线看| 国产精品久久久久aaaa| 五月天av影院| 韩日在线一区| 99在线影院| 精品国产一区探花在线观看| 欧美人在线观看| 中文国产字幕在线观看| 麻豆国产欧美日韩综合精品二区 | 欧美国产视频在线| 伊人久久大香线蕉成人综合网| 91精品久久久久久久久久不卡| 色悠悠久久88| 蜜桃视频在线入口www| 午夜精品久久久久久久99樱桃| 激情小说激情视频| 亚洲精品视频一区| av三级影院| 一区二区三区国产| 一级黄色在线| 欧美猛男男男激情videos| 午夜视频在线观看一区| 北条麻妃99精品青青久久| 亚洲欧洲免费视频| 美国av一区二区三区| 在线看福利影| 中文字幕的久久| 亚洲老女人av| 亚洲一区二区欧美| 日本1区2区| 一本一道综合狠狠老| 九七久久人人| 欧美日韩另类字幕中文| av免费在线观看网址| 2018中文字幕第一页| 三级av在线| 日本精品一区二区三区在线播放视频| 国产不卡高清在线观看视频| 国产成人午夜精品| eeuss影院www在线观看| 黄网站免费久久| 欧美亚洲高清一区二区三区不卡| 日韩免费观看高清完整版| 日本电影欧美片| 日韩精品中文字幕在线| 一本一道dvd在线观看免费视频| www欧美xxxx| 激情五月婷婷六月| 亚洲一区不卡在线| 国产精品99一区二区三区| 欧美a级成人淫片免费看| 色琪琪综合男人的天堂aⅴ视频| 美女视频久久黄| 欧美日韩免费在线| 91av网站在线播放| 成人h动漫免费观看网站| 日韩av在线中文字幕| jlzzjlzz亚洲女人| 日本在线精品视频| 欧美日韩在线电影| 永久免费精品影视网站| 欧美r级电影在线观看| 久久久99精品免费观看不卡| 亚洲国产精品成人一区二区| 导航艳情国产电影| 欧美电影在线观看网站| www亚洲人| 久久久精品国产一区二区三区| 国产精品1区2区3区| 亚洲欧洲视频| 人妻无码视频一区二区三区| 韩国中文字幕av| 成人香蕉视频| 中文字幕一区二区三区四区不卡 | 日本人视频jizz页码69| 精品偷拍一区二区三区在线看| 99re成人在线| 一本色道久久综合亚洲精品高清| 欧洲天堂在线观看| 精品伊人久久大线蕉色首页| 亚洲制服丝袜av| 亚洲男人都懂第一日本| 国产原创中文在线观看| 久久久久中文字幕| 亚洲国产毛片aaaaa无费看| 菁菁伊人国产精品| 黄瓜视频免费观看在线观看www | 五月婷婷六月丁香激情| 亚洲欧美精品在线| 奇米狠狠一区二区三区| 亚洲国产一二三精品无码| 亚洲美腿欧美激情另类| 亚洲欧洲一区二区天堂久久| 亚洲欧洲成人| 青青草原国产免费| 午夜精品久久久久影视| 8848成人影院| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久av一区二区三区亚洲| 亚洲精品一线二线三线| 国产精品18久久久久久久久| heyzo中文字幕在线| 狠狠干 狠狠操| 日韩av电影手机在线观看| 亚洲精品播放| 黄色av网站在线| 91免费视频黄| 久久久久久久久国产| 欧美日韩精品国产| 狠狠v欧美v日韩v亚洲ⅴ| 伊人色综合一区二区三区影院视频 | 深夜国产在线播放| 一区二区三区四区| 国产香蕉一区二区三区在线视频| 一区二区三区视频在线观看| 在线亚洲激情| 朝桐光一区二区| 国产96在线 | 亚洲| 国产精品高潮呻吟久久av无限| 欧美精品一区二区高清在线观看| 国产成人综合视频| 在线国产一区二区| 精品视频在线播放一区二区三区 | 不卡伊人av在线播放| 一本高清dvd不卡在线观看| 国产精品白丝av| 国产精品成人a在线观看| 惠美惠精品网| 欧洲日本在线| 精品剧情v国产在线观看| 国产高清精品在线观看| 偷拍视频一区二区| 国产欧美精品一区二区三区| 国自产精品手机在线观看视频| 亚洲三级 欧美三级| 91精品国产福利在线观看| 欧美精品在线观看播放| 精品色蜜蜜精品视频在线观看| 日本一区二区三区dvd视频在线| 可以免费看不卡的av网站| 日韩在线精品强乱中文字幕| 刘亦菲一区二区三区免费看| 免费大片黄在线观看视频网站| 黄网站app在线观看下载视频大全官网 | 久久综合久色欧美综合狠狠| 亚洲一区二区三区高清不卡| 日韩理论电影| 成人激情在线| 嫩草国产精品入口| 成人黄色小视频| 欧美精选一区二区三区| 婷婷综合在线| 日韩专区在线视频| 成人动漫视频在线| 不卡的看片网站| 午夜精品久久一牛影视| 91久久精品日日躁夜夜躁欧美| 欧美日韩在线视频观看| 福利一区视频在线观看| 欧美日韩免费高清一区色橹橹| 在线免费观看日韩欧美| 欧美色倩网站大全免费| 亚洲国产女人aaa毛片在线| 热久久美女精品天天吊色| 一区二区久久久久| 在线观看日韩av电影| 免费观看成年在线视频网站| 国产精品jizz在线观看麻豆| 午夜免费日韩视频| 日韩福利二区| 日韩一级黄色片| 精品一区二区三区久久久| 99色在线观看| 伊人成综合网站| 国产精品免费观看在线| 色爱精品视频一区| 蜜桃传媒一区二区| 蜜芽tv福利在线视频| 亚洲理伦在线| 亚洲国产精品va在线看黑人动漫| 欧美理论电影在线播放| 在线观看亚洲视频| 日韩一区二区三区av| 欧美日韩成人一区二区| 91超碰这里只有精品国产| 亚洲国产精品自拍| 欧美性猛交xxxx富婆弯腰| 日韩免费成人网| 久久精品在线播放| 日韩视频在线播放| 国产精品久久一区二区三区不卡|