算法基礎:常用的查找算法知識筆記

1、查找表和查找效率的概念

查找表是指由同一類型的數據元素構成的集合。分為靜態查找表和動態查找表。

1.1 靜態查找表

1、查詢某個特定元素是否在查找表的集合當中

2、查詢某個特定元素的各種屬性

1.2 動態查找表

1、在查找表中插入一個數據元素

2、在查找表中刪除一個元素

1.3 關鍵字

它是數據元素的某個數據項的值。用來識別該元素。主關鍵字是唯一能表示該元素的值。次關鍵字用來表示多個數據元素的關鍵字。

1.4 查找

根據給定的值在查找表中查詢是否存在一個其關鍵字等于給定值的記錄或者數據元素。

1.5 平均查找長度

關鍵字和給定值進行比較的記錄個數的平均值。也是衡量查找算法好壞的依據。

2、順序查找

從數據集合的一端,逐個記錄的關鍵字和給定值進行比較,找到則為查找成功。整個數據集合比較完后仍然找不到,則為查找失敗。

順序查找適用于順序存儲和鏈式存儲。其平均查找長度為(n+1)/2.

順序查找算法簡單、適應性廣。當數據集合數據量大的話,查詢效率會較低。

3、折半查找

折半查找也稱為二分查找。

平均查找長度:(n+1)/n*log^2(n+1) -1,當n值較大 log^2(n+1) -1

折半查找效率比順序查找高,它比較合適順序存儲和關鍵字有序排列。所以折半查找適合數據表不經常變動,查詢頻率較高的情況。

? ? ? ? ? ? ?

4、索引順序查找

索引順序查找又稱為分塊查找,是順序查找的一個改進查找算法。

原理:分塊查找首先將表分為若干塊。每一塊可以無序。但塊之間是要有序的。即后一塊所記錄的關鍵字均大于前一塊的關鍵字。另外還會創建一個索引塊表,索引塊表關鍵字有序。

查詢過程:1、在索引表中確認待查記錄所在數據塊。2、在該數據塊內順序查找。

平均查找長度:1/2(n/s + s) +1

它的效率優于順序查找,比不上折半查找。

5、樹表查找

常見的樹表查找有二叉查找樹、B-樹、紅黑樹等常見查找算法。二叉查找樹是一種動態查找表

5.1 二叉查找樹查找過程

利用二叉查找樹左小右大的特性,可以很容易實現查找任意值和最大/小值。

在二叉查找樹中查找一個給定的關鍵字n的過程與折半查找很類似,

查找過程如下:

1.若二叉樹是空樹,則查找失敗。

2.若x等于根節點的數據,則查找成功,否則。

3.若x小于根節點的數據,則遞歸查找其左子樹,否則。

4.遞歸查找其右子樹。

5.2 二叉樹查找樹b插入操作x的過程

1.若b是空樹,則直接將插入的節點作為根節點插入。

2.x等于b的根節點的數據的值,則直接返回,否則。

3.若x小于b的根節點的數據的值,則將x要插入的節點的位置改變為b的左子樹,否則。

4.將x要插入的節點的位置改變為b的右子樹。

注:如果二叉樹是單枝樹。查詢效率和順序查找相當。

6、哈希查找

6.1 概念

通過計算數據元素的存儲地址進行元素查找的一種查找算法。

根據設定的哈希函數和處理沖突的方法,將一組關鍵字映射到一個有限的連續的地址集上,并以關鍵字在地址集中的“像”作為記錄在表中的存儲位置,這種表稱為哈希表。這一映射過程稱為哈希造表或散列。所得的存儲位置稱為哈希位置或者散列地址。

哈希算法要解決兩個問題:哈希函數的構造、沖突的解決。

6.2 解決沖突

解決沖突就是為出現沖突的關鍵字找到另一個“空”的哈希地址。

常用的解決沖突的方法有:開放定址法、鏈地址法、再哈希法、建立公共溢區法。

6.2.1開放定址法

最簡單的產生探測序列的方法是進行線性探測,發生沖突后,順序到下一個存儲單元進行探測。

6.2.2 鏈地址法

鏈地址法是常用并且很有效的方法。它將具有相同哈希函數值記錄組成一個鏈表,當鏈域值為NULL時,表示沒有后繼記錄。

6.2.3 哈希查找

線性探測解決沖突的方式下:某一個位置上找到關鍵字等于key的記錄,表示查找成功;探測序列查不到key關鍵字的記錄,又遇到了空單元,表示找不到該元素,查找失敗。

鏈地址法解決沖突構造的哈希表中查找元素,就是根據哈希函數得到的元素所在鏈表的頭指針,然后在鏈表中順序查找的過程。

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

注解參數怎么使用變量_硅橡膠膠水有哪些特點?使用參數表現的怎么樣?如何儲存?...

作為單組分產品,硅橡膠膠水的使用方法簡單又靈活。直接涂抹在粘接基面上,固化之后即可抵抗外界的壓力與沖擊。別看它的規格不是很打,卻可以順順利利完成粘接,形成保護膜。硅橡膠膠水有哪些特點?沒有固化之前,是半透明…

android 谷歌郵箱,Android 使用 SMTP 發送郵件 (Gmail)

具體使用方法請看:http://www.oschina.net/code/snippet_12_9831.[代碼]GMailSender.javapackage org.apache.android.mail;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.mail.Message;import javax.mail.PasswordAuthent…

Java中return的兩種用法

一、return語句總是用在方法中,有兩個作用。 一個是返回方法指定類型的值(這個值總是確定的)。 一個是結束方法的執行(僅僅一個return語句)。 一般的就百是用在有反回值的方法中,用來返回方度法指定問類…

Alpha版總結會議

一、會議過程 我們于第十五周周一開始在學院樓針對前一段時間開發過程中的問題進行了討論。會議期間我們整合并回顧了一下兩次沖刺周期的成果。會議開始首先每個人都先發表了自己針對Alpha版開發過程中存在的疑惑和一些問題的看法。我們最后挑選出出三個最具針對性的問題進行了…

算法基礎:遞歸算法知識筆記

1、遞歸算法定義遞歸算法是將重復問題分解為同類的子問題而解決問題的方法,其核心思想是分治策略。簡單來說就是自己調用自己。直到達到退出遞歸的條件,則完成遞歸。2、遞歸的步驟1、找整個遞歸的終止條件:遞歸應該在什么時候結束&#xff1f…

ttl繼承邏輯門的邏輯功能與參數測試 實驗總結_LMS電聲測試儀,LMS-V測試系統,精聲電聲...

LMS-V測試系統LMS揚聲器測試儀從推出到現在25年的時間,在全世界被很多揚聲器開發與制造廠家廣泛應用研發與生產質量控制,傳統的LMS揚聲器測試儀采用ISA卡的形式提供,所以面臨著越來越多的零件過時,所以為了徹底解決這些問題&#…

android自動讓輸入框上劃,Android界面技巧:當輸入法調出時,如何讓界面自動上移,使輸入法不會遮擋到主界面(Activity)...

android:windowSoftInputModeactivity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5后的一個新特性。這個屬性能影響兩件事情:【一】當有焦點產生時,軟鍵盤是隱藏還是顯示【二】是否減少活動主窗口大小以便…

java中break標記的使用

筆試題目&#xff1a;break目前位于內層的for循環&#xff0c;如何才能讓break作用于外層 的for循環。可以標記解決 標記的命名只要符合標識符的命名規則即可。 Test public void test2(){aaa:for(int j 0 ; j<3 ; j){ // j0 外層for循環for(int i 0 ; i< 2 ; i){ //…

六月計劃#2B(6.10-6.16)

4/7 STL set 數學 快速傅立葉(FFT)高斯消元動態規劃 斜率優化轉載于:https://www.cnblogs.com/Sunnie69/p/5573299.html

電腦基礎知識入門:鍵盤上的英文,意思和功能匯總!

電腦鍵盤是把文字信息的控制信息輸入電腦的通道&#xff0c;從英文打字機的鍵盤演變而來的。它最早出現在電腦上的時候&#xff0c;還是一種叫做“電傳打字機”的部件。那些陌生的鍵盤按鍵都有什么用途?很多孩子不知道鍵盤上功能鍵和字母數字鍵以外的鍵盤按鍵有什么用&#xf…

elementui el-dialog 離頂部的位置_駐馬店建筑物避雷帶的安裝位置,本月報價

首頁 > 新聞中心發布時間&#xff1a;2020-11-06 18:23:42 導讀&#xff1a;科杰防雷為您提供駐馬店建筑物避雷帶的安裝位置的相關知識與詳情&#xff1a; 該系統在正常運行時&#xff0c;不管三相負荷平衡不平衡&#xff0c;在中性線N帶電情況下&#xff0c;PE線不會帶電。…

android 彈出框帶標題欄,Android開發靠標題欄的彈框

一、效果圖title_dialog.png二、思路首先它是一個彈框&#xff0c;只是彈框的布局做些處理&#xff0c;布局占滿屏幕&#xff0c;只有需要白色的布局的背景設為白色。其他沒設置背景顏色&#xff0c;自然用dialog的style的windowBackground三、案例關鍵代碼dialog的xmlxmlns:ap…

算法基礎:圖的相關算法知識筆記

一、圖的相關算法1、圖的分類知識如下圖&#xff1a;2、生成樹概念對連通圖進行遍歷&#xff0c;過程中所經過的邊和頂點的組合可看做是一棵普通樹&#xff0c;通常稱為生成樹。連通圖的生成樹具有這樣的特征&#xff1a;邊的數量 頂點數 - 13、最小生成樹在連通網的所有生成樹…

下午回來才后知百密于一疏忽

交了1700定金后就去了中介公司看了一下&#xff0c;比較偏僻窄小&#xff0c;然后里面有一些人和辦公桌比較擠&#xff0c;中介“董楠楠”介紹了一下女經理&#xff0c;然后就做地鐵回了&#xff0c;中途記憶&#xff0c;沒有冰箱然后統一口徑&#xff0c;對于只有一個電磁爐的…

java中break和continue的用法例子

break用于switch語句 1. break用于switch語句中&#xff0c;終止switch語句 下面先看 加上break,效果如下 我們可以看到&#xff0c;沒有用過break關鍵字時&#xff0c;不會在判斷下一個case的值&#xff0c;直接向后運行&#xff0c;直到遇到break&#xff0c;或者整體swit…

ftp 工具_ftp工具,ftp工具有哪些

對于ftp工具&#xff0c;你了解多少&#xff1f;其實一般人也接觸不到這種軟件。ftp工具主要是針對從事網站管理的工作人員比較有利的一款工具。可以幫助他們快速的解決工作中的問題。方便、簡單、快捷又明了的解決問題。那ftp工具有哪些呢&#xff1f;接下來給大家推薦四款好用…

盤點世界十大軟件外包公司排名是哪些公司

排名第一:IBMIBM,總部在紐約的阿蒙克。托馬斯沃森19世紀80年代在美國成立,是全球最大的信息技術和商業解決方案公司,在全球擁有超過30萬名員工,業務遍及160多個國家和地區。電腦上的制作非常出名,事實上,IBM在軟件方面取得了巨大的成就,特別是在一些IBM服務器上使用的軟件平臺上…

判斷不為空和不為空串的方法java

判斷不為空和不為空串的方法 方法一:用StringUtils工具類 首先要引入依賴 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId> </dependency> if( StringUtils.isNotBlank(str3) && St…

android xml事件,安卓事件

1、自定義內部類2、匿名內部類3、當前activity去實現事件接口4、在布局文件xml中添加點擊事件屬性(使用頻率非常高)補充&#xff1a;a、Android 在xml文件中 給某個控件聲明 id 是: "/自定義名字" &#xff0c;獲取是&#xff1a; "/自定義的名字" &#x…

Cocos2d-x v3.0物理系統 利用PhysicsEditor創建多邊形

Cocos2d-x 3.0的新物理系統我就不必多說了&#xff0c;接觸一段時間&#xff0c;感覺還是不錯的。對于那些基本概念&#xff0c;網上的教程已經泛濫了&#xff0c;就不多說了&#xff0c;不過對于創建多邊形物體的教程&#xff0c;還真不多&#xff0c;很多都是創建圓形和矩形&…