C/C++_查找算法_查找的定義

查找的定義

查找 又稱檢索或查詢,是指在查找表中找出滿足一定條件的結點或記錄對應的操作。

查找表 在計算機中,是指被查找的數據對象是由一類型的記錄構成的集合, 如順序表、鏈表、二叉樹和哈希表等

查找效率 查找算法中基本運算是通過記錄的關鍵字與給定值進行比較,所以查找的效率通常取決於比較所花的時間,而時間取決於比較的次數。通常以關鍵字與給定值進行比較的記錄個數的平均值來計算。

查找操作及分類

操作
1、查找某個“特定的”數據元素是否存在在查找表中
2、某個“特定的”數據元素的各種屬性
3、在查找表中插入一個數據元素
4、從查找表中刪除某個數據元素

分類
若對查找表進行(1)或(2)兩種操作,則稱此類查找表爲靜態查找表

若在查找過程中同時插入查找表中存在的數據元素, 或者從查找表中刪除以存在的某個數據元素,則稱此類查找爲動態查找表

數組和索引

日常生活中,我們經常會在電話號碼簿中查閱“某人”的電話號碼, 按姓查詢或者按字母排序查詢;在字典查閱 “某個詞” 的讀者和含義等等。這裏,“電話號碼簿”和“字典”都可看作一張查找表,而按“性”或者“字母”查詢則是按索引查詢!

在這裏插入圖片描述
索引把線性表分成若干塊,每一塊中的元素存儲順序是任意的,但是塊與塊間必須按關鍵字大小按循序排序。即前一塊中最大關鍵字值小於後一塊中最小關鍵字值。

分塊以後,爲了快速定義塊,還需要建立一個索引表,索引表中的一項對應線性表中的一塊,索引項由鍵域和鏈域組成。鍵域存放相應關鍵字的鍵值,鏈域存放指向本塊第一個節點和最後一個節點的指針,索引表按關鍵字由小到大的順序排列!

數組是特殊的塊索引(一個塊一個元素):
在這裏插入圖片描述
哈希表是非常經典的塊索引!
在這裏插入圖片描述
分塊查找的算法分兩步,首先確定所查找的節點屬於哪一塊,即在索引表中查找其所在的塊,然後在塊內查找待查詢的數據。由於索引表是遞增有序的,可採用二分法查找,而塊內元素是無序的,只能採用順序查找。(塊內元素較少,則不會對執行速度有太大的影響)

結語:

學到的知識要, 多複習, 多總結, 多敲. 需要時間的積累, 才能引起質的改變. 自己寫不出來的永遠是別人的.

分享一下我的技巧: 代數法把具體的數字帶進去, 看看能能能找到規律(掌握思想).
還有就是畫圖, 也很重要. 用筆畫出來, 把數代進去, 方法雖然笨, 但真的很實用, 好記憶不如爛筆頭!!! 還有多用debug(調試工具)

我是小白, C/C++功力…, 你懂得, 寫的文章可能不是很好. 如果存在問題, 歡迎大神給予評判指正.
錯了不可怕, 可怕的是找不出bug, 誰沒錯過!!!

最近學操作系統我認爲, 學什麼都要成本(時間), 即使它是免費的, 我個人認爲要挑來學, 挑重點來學, 而不是從頭到尾, 除非考試考研.

這個知識點我沒有完全掌握, 就是會了也要複習, 革命尚未成功, 同志還需努力!!! , 我會回來反覆複習的

今日是: 2020年5月18日, (由於疫情的原因)現在沒有返校. 寫博客,也可自己加強記憶,就當寫寫日記吧!!!

希望給個贊: 反正你又不虧, 順便而已

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章