查詢 線性結構的二分查詢

2021-07-25 18:44:54 字數 974 閱讀 7749

查詢是在大量的資訊中尋找乙個特定的資訊元素,在計算機應用中,查詢是常用的基本運算,例如編譯程式中符號表的查詢。

線性結構、樹、圖的查詢都不一樣。

線性結構的順序查詢就不多說了,這裡總結線性結構的二分查詢。

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

先用迴圈實現二分查詢。下面的**裡還含有順序查詢。

#include using namespace std;

int main () ;

int value = 23;

bool b = false;

//順序查詢

for (int i = 0;ivalue)

} if (!b)

}return -1; // 沒有找到的終止條件

}

// 遞迴 二分法查詢主函式裡的**

int idx = bisearch(a,0,n-1,value);

if (idx==-1)

{ cout<<"沒有找到"《又來把一堆廢話寫一遍。每寫一遍,都有進步,都能加深我對遞迴的理解。

1. 終止條件。

(1) 找到的終止條件。--> a[mid] == value,就可以返回mid了。這是最簡單的問題,已經解決了。

(2) 沒找到的終止條件。

2. 遞推關係

(1)如果要找的數還在後半段,就把問題分解,對後一半進行遞迴。return ***就好…

(2)如果要找的數還在左半段,就對左一半遞迴。

線性查詢 二分查詢

在陣列中找出某個值a 線性查詢 二分查詢 線性查詢就是乙個個比較,找出那個值a。二分查詢是針對有序數列,找出中間值nid與a比較,mid a,從mid左邊小於mid的值中查詢,這樣依次縮小查詢空間,找到該值。線性查詢法 value 3 array 1,2,3,4,5,6,7 def ls ary,v...

c 線性查詢 二分查詢

今天蒟蒻來給大家講線性查詢 二分查詢 一 線性查詢思路 1.思路 線性查詢是一種在資料中查詢資料的演算法。線性查詢的操作十分簡單,只要在陣列中從頭開始依次往下查詢即可。如果找到了輸出即可,沒有找到就繼續搜下去。2.先來找10好了 第一步 從3開始找,3不等於10,換下乙個 第二步 到9,9不等於10...

線性查詢和二分查詢

從第乙個遍歷判斷到最後乙個,查詢到全部符合條件的值。遍歷陣列找到就返回下標值 如果有多個可先儲存 1.public class seqsearch 沒有順序的陣列 4.listsearch seqsearch arr,1 5.if search.size 0 else 10.11.12.privat...