
算法與數(shù)據(jù)結(jié)構(gòu)|查找
1.查找基本概念
分為靜態(tài)查找和動(dòng)態(tài)查找;靜態(tài)查找時(shí)構(gòu)造的存儲(chǔ)結(jié)構(gòu)成為靜態(tài)查找表,動(dòng)態(tài)查找時(shí)構(gòu)造的存儲(chǔ)結(jié)構(gòu)為動(dòng)態(tài)哈招標(biāo)
2.靜態(tài)查找表
靜態(tài)查找表包括:順序表、有序順序表、索引順序表三種結(jié)構(gòu)。
2.1 順序表
在順序表上查找的基本思想是:從順序表的一端開(kāi)始,用給定數(shù)據(jù)元素的關(guān)鍵字逐個(gè)與順序表中各數(shù)據(jù)元素的關(guān)鍵字比較,若存在,則查找成功;反之,則查找失敗。
查找成功的平均查找長(zhǎng)度ASL_成功=(1+n)/2;查找失敗平均查找長(zhǎng)度ASL_失敗=n
2.2 有序順序表
有序順序表上的查找算法主要有順序查找和二分查找方法
2.2.1 順序查找
與之前的查找一樣,但是由于是有序的因此在失敗時(shí)平均查找長(zhǎng)度與之前是有不同的:
ASL_成功=(n+1)/2;ASL_失敗=(n+1)/2。
2.2.2 二分查找
基本思想:在一個(gè)查找區(qū)間,確定查找區(qū)間的中心位置,用待查找的元素的關(guān)鍵字與之對(duì)比,若相等則查找成功;否則,若若小于則把查找區(qū)間改為原區(qū)間的左部分;若大于則把查找區(qū)間改為原區(qū)間的右部分;這樣查找一直到查找區(qū)間的上界小于下界為止。
2.3 索引順序表
當(dāng)順序表的數(shù)據(jù)元素個(gè)數(shù)非常大時(shí),無(wú)論使用哪種查找算法都需要很長(zhǎng)的時(shí)間,此時(shí),我們可以在順序表上建立索引表。我們把在其上建立索引表的順序表叫做主表,主表中存放數(shù)據(jù)元素的全部信息,索引表中只存放主表中要查找數(shù)據(jù)元素的主關(guān)鍵字和索引信息。
當(dāng)數(shù)據(jù)元素個(gè)數(shù)非常龐大時(shí),可以對(duì)索引表再做索引表,這樣的索引表叫做耳機(jī)索引表或者多級(jí)索引表。
索引表還分為等長(zhǎng)索引表、不等長(zhǎng)索引表(多一個(gè)length域)(主表分段有序即可,要求比有序低)。
3.動(dòng)態(tài)查找表
3.1 二叉排序樹(shù)
二叉排序樹(shù):或者是一個(gè)空樹(shù)或者具有以下性質(zhì):(1)若左子樹(shù)不空,則左子樹(shù)上所有節(jié)點(diǎn)的關(guān)鍵字值均小于根節(jié)點(diǎn)的關(guān)鍵字值;(2)若右子樹(shù)不空,則右子樹(shù)上所有節(jié)點(diǎn)的關(guān)鍵字均大于等于根節(jié)點(diǎn)的關(guān)鍵字值;
3.2 B_樹(shù)
與二叉排序樹(shù)相比,B_樹(shù)是一種平衡多叉排序樹(shù)。這里說(shuō)的平衡是指所有葉節(jié)點(diǎn)都在同一層上,從而可避免出現(xiàn)像二叉排序樹(shù)那樣的分支退化現(xiàn)象;多叉指多余二叉,B_是一種動(dòng)態(tài)查找效率高于二叉排序樹(shù)的樹(shù)。
B_樹(shù)中所有節(jié)點(diǎn)的孩子節(jié)點(diǎn)的最大值成為B_樹(shù)的階通常用m表示。一棵m階的B_樹(shù)或者是一棵空樹(shù),或者是滿足下列要求的m叉樹(shù):
1,樹(shù)中每個(gè)節(jié)點(diǎn)最多有m個(gè)孩子節(jié)點(diǎn)
2,除根節(jié)點(diǎn)外,其他節(jié)點(diǎn)至少有[m/2](向上取整)個(gè)孩子節(jié)點(diǎn)
3,若根節(jié)點(diǎn)不是葉節(jié)點(diǎn),則根節(jié)點(diǎn)至少有兩個(gè)孩子節(jié)點(diǎn)。
4,每個(gè)節(jié)點(diǎn)的結(jié)構(gòu):
n表示該節(jié)點(diǎn)中關(guān)鍵字個(gè)數(shù);Ki表示該節(jié)點(diǎn)的關(guān)鍵字且滿足Ki<Ki+1;Pi為該節(jié)點(diǎn)的孩子節(jié)點(diǎn)指針且滿足Pi指針?biāo)讣罢O但的關(guān)鍵字均大于等于Ki小于Ki+1。Pn指針?biāo)傅年P(guān)鍵字大于等于Kn
4.哈希表
哈希函數(shù):把數(shù)據(jù)元素的關(guān)鍵字和該數(shù)據(jù)元素的存放位置之間的映射函數(shù)稱為哈希函數(shù);哈希表就是通過(guò)哈希函數(shù)確定數(shù)據(jù)元素存放位置的一種特殊結(jié)構(gòu)。
哈希沖突,當(dāng)數(shù)據(jù)元素關(guān)鍵字不相等,但是經(jīng)過(guò)哈希函數(shù)映射的位置相同時(shí),我們管這個(gè)叫做哈希沖突.哈希沖突主要與三個(gè)因素有關(guān):a,裝填因子(存入元素與哈希池地址空間壁紙;b,使用的哈希函數(shù)相關(guān);c,與解決哈希沖突的沖突解決函數(shù)有關(guān))
解決哈希沖突的方法,基本思想:當(dāng)哈希沖突時(shí),通過(guò)哈希函數(shù)產(chǎn)生一個(gè)新的哈希地址是不產(chǎn)生沖突,通常哈希函數(shù)是一組函數(shù)。
一旦構(gòu)造好哈希表,只需要以關(guān)鍵字K和哈希函數(shù)來(lái)映射到地址,然后從地址中取出關(guān)鍵字元素對(duì)比是否相同,相同則查找成功,否則以建立哈希表時(shí)所用的沖突函數(shù)得到新的地址查看關(guān)鍵字是否相同,一直到查找成功或查找完成m次而未查找到。數(shù)據(jù)分析師培訓(xùn)
常用的哈希函數(shù)構(gòu)造方法:1,除留余數(shù)法;2,直接定址法;3,數(shù)字分析法。
哈希沖突解決方法:1,開(kāi)放定址法(線性探查法、平方探查法、偽隨機(jī)數(shù)法);2,鏈表法。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-18剛?cè)肼殘?chǎng)或是在職場(chǎng)正面臨崗位替代、技能更新、人機(jī)協(xié)作等焦慮的打工人,想要找到一條破解職場(chǎng)焦慮和升職瓶頸的系統(tǒng)化學(xué)習(xí)提升 ...
2025-07-182025被稱為“AI元年”,而AI,與數(shù)據(jù)密不可分。網(wǎng)易公司創(chuàng)始人丁磊在《AI思維:從數(shù)據(jù)中創(chuàng)造價(jià)值的煉金術(shù) ...
2025-07-18CDA 數(shù)據(jù)分析師:數(shù)據(jù)時(shí)代的價(jià)值挖掘者 在大數(shù)據(jù)席卷全球的今天,數(shù)據(jù)已成為企業(yè)核心競(jìng)爭(zhēng)力的重要組成部分。從海量數(shù)據(jù)中提取有 ...
2025-07-18SPSS 賦值后數(shù)據(jù)不顯示?原因排查與解決指南? 在 SPSS( Statistical Package for the Social Sciences)數(shù)據(jù)分析過(guò)程中,變量 ...
2025-07-18在 DBeaver 中利用 MySQL 實(shí)現(xiàn)表數(shù)據(jù)同步操作指南? ? 在數(shù)據(jù)庫(kù)管理工作中,將一張表的數(shù)據(jù)同步到另一張表是常見(jiàn)需求,這有助于 ...
2025-07-18數(shù)據(jù)分析師的技能圖譜:從數(shù)據(jù)到價(jià)值的橋梁? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,數(shù)據(jù)分析師如同 “數(shù)據(jù)翻譯官”,將冰冷的數(shù)字轉(zhuǎn)化為清晰的 ...
2025-07-17Pandas 寫(xiě)入指定行數(shù)據(jù):數(shù)據(jù)精細(xì)化管理的核心技能? 在數(shù)據(jù)處理的日常工作中,我們常常需要面對(duì)這樣的場(chǎng)景:在龐大的數(shù)據(jù)集里精 ...
2025-07-17解碼 CDA:數(shù)據(jù)時(shí)代的通行證? 在數(shù)字化浪潮席卷全球的今天,當(dāng)企業(yè)決策者盯著屏幕上跳動(dòng)的數(shù)據(jù)曲線尋找增長(zhǎng)密碼,當(dāng)科研人員在 ...
2025-07-17CDA 精益業(yè)務(wù)數(shù)據(jù)分析:數(shù)據(jù)驅(qū)動(dòng)業(yè)務(wù)增長(zhǎng)的實(shí)戰(zhàn)方法論 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,“數(shù)據(jù)分析” 已從 “加分項(xiàng)” 成為 “必修課 ...
2025-07-16MySQL 中 ADD KEY 與 ADD INDEX 詳解:用法、差異與優(yōu)化實(shí)踐 在 MySQL 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)中,索引是提升查詢性能的核心手段。無(wú)論 ...
2025-07-16解析 MySQL Update 語(yǔ)句中 “query end” 狀態(tài):含義、成因與優(yōu)化指南? 在 MySQL 數(shù)據(jù)庫(kù)的日常運(yùn)維與開(kāi)發(fā)中,開(kāi)發(fā)者和 DBA 常會(huì) ...
2025-07-16如何考取數(shù)據(jù)分析師證書(shū):以 CDA 為例? ? 在數(shù)字化浪潮席卷各行各業(yè)的當(dāng)下,數(shù)據(jù)分析師已然成為企業(yè)挖掘數(shù)據(jù)價(jià)值、驅(qū)動(dòng)決策的 ...
2025-07-15CDA 精益業(yè)務(wù)數(shù)據(jù)分析:驅(qū)動(dòng)企業(yè)高效決策的核心引擎? 在數(shù)字經(jīng)濟(jì)時(shí)代,企業(yè)面臨著前所未有的數(shù)據(jù)洪流,如何從海量數(shù)據(jù)中提取有 ...
2025-07-15MySQL 無(wú)外鍵關(guān)聯(lián)表的 JOIN 實(shí)戰(zhàn):數(shù)據(jù)整合的靈活之道? 在 MySQL 數(shù)據(jù)庫(kù)的日常操作中,我們經(jīng)常會(huì)遇到需要整合多張表數(shù)據(jù)的場(chǎng)景 ...
2025-07-15Python Pandas:數(shù)據(jù)科學(xué)的瑞士軍刀? ? 在數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,面對(duì)海量、復(fù)雜的數(shù)據(jù),如何高效地進(jìn)行處理、分析和挖掘成為關(guān)鍵。 ...
2025-07-15用 SQL 生成逆向回滾 SQL:數(shù)據(jù)操作的 “后悔藥” 指南? 在數(shù)據(jù)庫(kù)操作中,誤刪數(shù)據(jù)、錯(cuò)改字段或誤執(zhí)行批量更新等問(wèn)題時(shí)有發(fā)生。 ...
2025-07-14t檢驗(yàn)與Wilcoxon檢驗(yàn)的選擇:何時(shí)用t.test,何時(shí)用wilcox.test? t 檢驗(yàn)與 Wilcoxon 檢驗(yàn)的選擇:何時(shí)用 t.test,何時(shí)用 wilcox. ...
2025-07-14AI 浪潮下的生存與進(jìn)階: CDA數(shù)據(jù)分析師—開(kāi)啟新時(shí)代職業(yè)生涯的鑰匙(深度研究報(bào)告、發(fā)展指導(dǎo)白皮書(shū)) 發(fā)布機(jī)構(gòu):CDA數(shù)據(jù)科 ...
2025-07-13LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11