索引儲存模型 二分查詢

2021-10-19 17:27:52 字數 456 閱讀 9550

雙十一過去之後,你女朋友跟你玩了乙個猜數字的遊戲。

猜猜我昨天買了多少錢,給你五次機會。

10000?低了。30000?高了。接下來你會猜多少?

20000。為什麼你不猜11000,也不猜29000 呢?

其實這個就是二分查詢的一種思想,也叫折半查詢,每一次,我們都把候選資料縮小了一半。如果資料已經排過序的話,這種方式效率比較高。

所以第乙個,我們可以考慮用有序陣列作為索引的資料結構。

有序陣列的等值查詢和比較查詢效率非常高,但是更新資料的時候會出現乙個問題,可能要挪動大量的資料(改變index),所以只適合儲存靜態的資料。

為了支援頻繁的修改,比如插入資料,我們需要採用鍊錶。鍊錶的話,如果是單鏈表,它的查詢效率還是不夠高。

所以,有沒有可以使用二分查詢的鍊錶呢?

為了解決這個問題,bst(binary search tree)也就是我們所說的二叉查詢樹誕生了。

二分查詢邊界索引

問題說明 給你乙個公升序整數陣列nums,和乙個目標值target,請返回它在nums陣列中的左邊界索引和右邊界索引 例如 nums target 3,那麼就應該返回左邊界索引2和右邊界索引4 問題分析 我們先看如果是平常我們熟悉的二分查詢法,找到乙個值就返回它的索引,這種 是這樣的 public ...

順序查詢 二分查詢 索引查詢

1.查詢技術的分類。如下圖 2.什麼是順序查詢呢?無序表 順序查詢的原理很簡單,就是遍歷整個列表,逐個進行記錄的關鍵字與給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄。如果直到最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢失敗。時間複雜度是o n 3....

二分查詢目標元素索引

package com.zhangry.search public class binarysearch int start 0 int end arrayforsearch.length 1 int target 3 system.out.println target 在此陣列中的索引為 bina...