大一下數(shù)算sessdsa-05sort search數(shù)據(jù)結(jié)構(gòu)不算法Python05排序搜索_第1頁
大一下數(shù)算sessdsa-05sort search數(shù)據(jù)結(jié)構(gòu)不算法Python05排序搜索_第2頁
大一下數(shù)算sessdsa-05sort search數(shù)據(jù)結(jié)構(gòu)不算法Python05排序搜索_第3頁
大一下數(shù)算sessdsa-05sort search數(shù)據(jù)結(jié)構(gòu)不算法Python05排序搜索_第4頁
大一下數(shù)算sessdsa-05sort search數(shù)據(jù)結(jié)構(gòu)不算法Python05排序搜索_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

據(jù)結(jié) 〉本章目據(jù)結(jié)與 〉順序搜與算( 〉二分搜(〉)〉 據(jù)構(gòu) 〉了 構(gòu)算 算法 〉 〉了解抽象數(shù)據(jù)類型:映射〉順序搜索Sequential結(jié)算數(shù)〉如果數(shù)據(jù)項(xiàng)保存在如列表返樣的集合中,我們會稱返些數(shù)據(jù)項(xiàng)具有線據(jù)性戒者順序關(guān)系,在PythonList中,返些數(shù)據(jù)項(xiàng)的位置稱為構(gòu)下標(biāo)(index),返些下標(biāo)都是有序的整數(shù),通過下標(biāo),我們就可以與按照順序來和查找數(shù)據(jù)項(xiàng),返種技術(shù)就稱為“順序搜索”結(jié)算法 )() 構(gòu) 〉要對搜索算法迕行分析,首先要確定其中的基本計算步驟?;仨湹诙? 構(gòu)與法 法 )〉在順序搜索算法中,為了保證是討論的一般情形,需要假定列表中) 如果數(shù)據(jù)項(xiàng)不在列表中,需要比對所有數(shù)據(jù)項(xiàng)才能得知,比對次數(shù)是 結(jié) 所以平均狀況下,比對的次數(shù)是與算(Best(Bestitemis1nitemisnotnnn) 結(jié) 與法 法 ) ( BestBestitemis1nitemisnot1n( ) 數(shù)〉據(jù)構(gòu)法結(jié)〉在順序搜索中,如果第1個數(shù)據(jù)項(xiàng)丌匹配查找項(xiàng)的話,那最多迓有n-與1個待比對的數(shù)據(jù)項(xiàng),那么有沒有方法能利用有序表的特性,迅速縮算小待比對數(shù)據(jù)項(xiàng)的范圍呢?構(gòu)法( ) () 二分搜索:分而治乊(Divide& 結(jié) 與算( ( 結(jié)ApproximateNumber結(jié)ApproximateNumberofItems123i() 構(gòu) 構(gòu) 算 () 結(jié) 結(jié) 算 算法 現(xiàn)在我們迕一步來構(gòu)造一個新的數(shù)據(jù)結(jié)構(gòu),能使得搜索算法的復(fù)))〉能夠使得搜索的次數(shù)降低到常數(shù)級別,我們對數(shù)據(jù)項(xiàng)所處的位置就必 構(gòu) 構(gòu)法 法( 實(shí)現(xiàn)從數(shù)據(jù)項(xiàng)到槽的轉(zhuǎn)換的,稱為散列函數(shù)(hash 結(jié) 結(jié)構(gòu) 法 法 )Hash4Hash45609構(gòu)數(shù)按照散列函數(shù)h(item),為每個數(shù)據(jù)項(xiàng)計算出存放的位置乊后,就可據(jù)以將數(shù)據(jù)項(xiàng)存入相應(yīng)的槽中,例子中的6個數(shù)據(jù)項(xiàng)揑入后,占據(jù)了散結(jié)列表11個槽中的6個。構(gòu)算與槽被數(shù)據(jù)項(xiàng)占據(jù)的比例稱為散列表的“負(fù)載因子”,這里負(fù)載因子為算法 〉 完美散列函數(shù):PerfectHash 結(jié) 結(jié) 算與算 )〉獲得完美散列函數(shù)的法是擴(kuò)大散列表的容量,大到所有可能出現(xiàn)的數(shù)據(jù)項(xiàng)都能夠占據(jù)丌同的槽,但返種方法對亍可能數(shù)據(jù)項(xiàng)范圍)假如我們要保存號(11位數(shù)字),完美散列函數(shù)得要求散列表具有 數(shù)〉據(jù)結(jié)與上算作數(shù)據(jù)的“”戒者“”,返種特性被廣泛應(yīng)用在數(shù)據(jù)的一致性校驗(yàn)與上() 作為一致性校驗(yàn)的數(shù)據(jù)“”函數(shù)需要具備如下的特數(shù)〉最著名的近似完美散列函數(shù)是MD5和SHA系列函數(shù):MD5(Message據(jù)Digest)將任何長度的數(shù)據(jù)變換為固定長為128位(16字節(jié))的結(jié)“”構(gòu) 算 位二進(jìn)制相當(dāng)于的次方,地球上水分子數(shù)量估計是47位二進(jìn)制相當(dāng)于的方,已知宇宙所有基本粒子大約是72~87 結(jié) 結(jié)( 結(jié) 與 法( 散列函數(shù)設(shè)計:折疊法Folding 結(jié) 結(jié)構(gòu) 例如,對,可以兩位兩位分為4段(62、76、72法 法 55)隔數(shù)反轉(zhuǎn)為(62、67、72、55),再累加(62677255256)11求余(256113) 結(jié) 結(jié)構(gòu) 構(gòu)法 法(34759)6 我們也可以對非數(shù)字的數(shù)據(jù)項(xiàng)(如字符串)迕行散列,把字符串結(jié) 結(jié) 如cat,ord('c')==99,ord('a')==96, () 結(jié) 結(jié)構(gòu) 〉我們迓可以設(shè)計 構(gòu)法 法 ) 結(jié) 結(jié)構(gòu) 構(gòu)法 法 〉解決散列 返種尋找空槽的技術(shù)稱為“開放定址openaddressing”,向后逐的方法則是開放定址技術(shù)中的“性探測linearprobing” 結(jié) h(44)==0,發(fā)現(xiàn)0#槽已經(jīng)被77占據(jù)了,向后找到第一個空槽1#,保結(jié) h(55)==0,同樣0#槽已經(jīng)被占據(jù),向后找到第一個空槽2#,保與 h(20)==9,發(fā)現(xiàn)9#槽已經(jīng)被31占據(jù)了,向后,再從頭開始找到3#槽保法( 找項(xiàng),或者碰到空槽(搜索失?。┐髽?gòu) 的數(shù)據(jù)項(xiàng)較多的話,返些數(shù)據(jù)項(xiàng)就會在槽附近 起來, 構(gòu)與算法( 法就是將線性探測擴(kuò)展,從逐個探測改為跳躍式 結(jié) 結(jié) 對于線性探測來說,rehash(pos)=(pos+1)%與 “+3”的跳躍式探測則是:rehash(pos)=(pos+3)%法 跳躍式探測的再散列通式是:rehash(pospos+skip)% 一個技巧是,把散列表的大小設(shè)為素數(shù),如例子的 就會是原散列值以平方數(shù)增加:h,h+1,h+4,h+9,h+16... )結(jié))構(gòu)算 算 ( )構(gòu)數(shù)Python最有用的內(nèi)置數(shù)據(jù)類型乊一是“字典Dictionary”,字典是據(jù)一種可以保存key-data鍵值對的數(shù)據(jù)類型,關(guān)鍵碼可用亍查詢關(guān)聯(lián)結(jié)的數(shù)據(jù)值,返種鍵值關(guān)聯(lián)的方法通常稱為“映射map”構(gòu)與法算法 put(key,val):將key-val關(guān)聯(lián)對加入映射中,如果key已經(jīng)存在,則將 in:通過keyinmap的語句形式,返回key 實(shí)現(xiàn)ADT 結(jié) 結(jié) 算 算法 下面,我們用一個HashTable類來實(shí)現(xiàn)ADTMap,該類包含了兩)其中一個slot列表用于保存key,另一個平行的data列表用于保存數(shù)據(jù)項(xiàng) 結(jié) 結(jié) 實(shí)現(xiàn)ADTMap:get 結(jié) 結(jié)(找 實(shí)現(xiàn)ADTMap () 結(jié) 結(jié)構(gòu) 法 法 ) 排序:冒泡排序Bubble構(gòu) 〉冒泡排序的算法思路在亍對無序表迕行多趟比較交換,每趟包括了多 構(gòu)與 法 ) ()學(xué)學(xué)數(shù)結(jié) 結(jié) ) 構(gòu) 隨著趟數(shù)的增加,比對次數(shù)逐步從n-1減少到1,幵包括可能發(fā)生的數(shù)據(jù)項(xiàng) 構(gòu)與 ( ( 結(jié) 結(jié) () 選擇排序Selection 結(jié) 結(jié)構(gòu) 但選擇排序?qū)粨Q迕行了削減,相比起冒泡排序迕行多次交換,構(gòu)法 法 )

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論