今天這篇博客就聊聊幾種常見的查找算法,當(dāng)然本篇博客只是涉及了部分查找算法,接下來的幾篇博客中都將會(huì)介紹關(guān)于查找的相關(guān)內(nèi)容。本篇博客主要介紹查找表的順序查找、折半查找、插值查找以及Fibonacci查找。本篇博客會(huì)給出相應(yīng)查找算法的示意圖以及相關(guān)代碼,并且給出相應(yīng)的測(cè)試用例。當(dāng)然本篇博客依然會(huì)使用面向?qū)ο笳Z(yǔ)言Swift來實(shí)現(xiàn)相應(yīng)的Demo,并且會(huì)在github上進(jìn)行相關(guān)Demo的分享。

查找在生活中是比較常見的,本篇博客所涉及的這幾種查找都是基于線性結(jié)構(gòu)的查找。也就是說我們的查找表是一個(gè)線性表,我們要查找某個(gè)元素在線性表中的位置。順序查找就是從頭到尾一個(gè)個(gè)進(jìn)行比較,直到找到為止,此方法適用于無序的查找表。而折半查找、插值查找以及Fibonacci查找的查找表都是有序的,下方的內(nèi)容會(huì)詳細(xì)的介紹到。進(jìn)入今天博客的主題。

 

一、查找協(xié)議的定義

因?yàn)楸酒┛臀覀兩婕安檎冶淼亩喾N查找方式,而且查找表的數(shù)據(jù)結(jié)構(gòu)都是線性結(jié)構(gòu)?;?span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);">Swift面向?qū)ο笳Z(yǔ)言的特征以及面向接口編程的原則,我們先給我們所有的查找方式定義一個(gè)協(xié)議。本篇博客中所有的查找方式都會(huì)遵循這個(gè)查找類型,這樣便于外部統(tǒng)一調(diào)用,也方便我們測(cè)試和擴(kuò)展。

下方這個(gè)SearchType協(xié)議就是我們所定義的查找協(xié)議。下方這個(gè)協(xié)議雖然比較簡(jiǎn)單,但是還是比較重要的,協(xié)議中定義了本篇博客所涉及的查找方式對(duì)外的調(diào)用方式。協(xié)議中的search()方法就是外部要調(diào)用的方法。該函數(shù)第一個(gè)參數(shù)就是要查找的查找表,

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式