資料結構之查詢一靜態查詢

2021-06-21 03:06:52 字數 1398 閱讀 4296

分類: 資料結構

2013-08-08 11:38

264人閱讀收藏 

舉報資料結構查詢

今天將資料結構的查詢章節的知識點總結一下,以前在課堂上沒有好好聽,所以現在不得不將這些基礎拿出來再預習—學習—複習,哎,苦逼的程式媛。。。。。

下面進入正題。

在非數值運算問題上,資料存數量一般很大,為了在大量資料中找到某些值,需要用到查詢技術,為了提高查詢效率,需要對一些資料進行排序。查詢和排序的資料處理量幾乎佔到總處理量的80%以上,所以查詢和排序的有效性直接影響到基本演算法的有效性,因而查詢和排序時很重要的處理技術。

對於表的查詢,有兩種情況:

一種是靜態查詢:在查詢過程中,只是對資料元素進行查詢;

一種是動態查詢:在查詢的同時,插入找不到的元素,或從查詢表中刪除已經查到的某個元素,即允許表中的元素變化。

查詢的基本方法可以分為兩類:比較式查詢和計算式查詢

比較式查詢又分為:基於線性表的查詢和基於樹的查詢

計算式查詢又稱為雜湊查詢

基於線性表的查詢具體又可以分為:順序查詢、折半查詢和分塊查詢

順序查詢的特點是:用所給關鍵字與線性表中的每個元素逐個進行比較(此時的比較是從列表中最後乙個元素開始的,逐一往前找,此時哨兵為r[0],迴圈條件從1開始到n;當然,迴圈條件也可以逆序,此時的哨兵則為r[n+1])。注:設定哨兵位,是為了防止下標越界。

儲存結構通常為順序結構,也稱為鏈式結構。

該方法的平均查詢長度為:asl=(n+1)/2

折半查詢:又稱為二分查詢法,對於待查詢的列表有兩個要求:

1、必須採用順序儲存結構

2、必須按照關鍵大小有序排列

該方法的平均查詢長度為:asl=log2(n+1) -1

特點是:

優點:比較次數少,查詢速度快,平均效能好

缺點:要求對於待查表為有序表,且插入和刪除比較困難

該方法的適用情況:適用於不經常變動而查詢頻繁的有序列表

折半查詢可以用二叉判定樹來表示:

此時的平均查詢長度是:asl=每個結點的層次數之和 / 結點總數

分塊查詢:

思想:將列表分為若干個塊(子表),塊的長度均勻,每塊中元素任意排列,快內無序,塊間有序。構造乙個索引表,其中每乙個索引項對應乙個塊(塊內的最大關鍵字)並記錄每塊的起始位置,以及每塊中的最大關鍵字(或者最小關鍵字),索引表按關鍵字有序排列

該方法的平均查詢長度是由兩部分組成的,即查詢索引表時的平均查詢長度為l1,與在相應塊內進行順序查詢的平均查詢長度為l2,則有

asl=l1+l2

若用順序查詢法確定待查元素所在的塊,則有:

asl=l1+l2=(b+s)/ 2 +1(注:b:表分的塊數,s:塊內的元素數)

若用折半查詢法確定待查元素所在的塊,則有:

asl=log2(n/s + 1) +s/2(注:n:表的長度)

資料結構之查詢一靜態查詢

今天將資料結構的查詢章節的知識點總結一下,以前在課堂上沒有好好聽,所以現在不得不將這些基礎拿出來再預習 學習 複習,哎,苦逼的程式媛。下面進入正題。在非數值運算問題上,資料存數量一般很大,為了在大量資料中找到某些值,需要用到查詢技術,為了提高查詢效率,需要對一些資料進行排序。查詢和排序的資料處理量幾...

資料結構 21 查詢之靜態查詢表

查詢的定義 給定乙個值k,在含有n個結點的表 或檔案 中找出關鍵字等於給定值k的結點,若找到,則查詢成功,輸出該結點在表中的位置 否則查詢失敗,輸出查詢失敗的資訊。查詢表是由具有同一型別 屬性 的資料元素 記錄 組成的集合。分靜態查詢表和動態查詢表兩類。靜態查詢表 僅對查詢表進行查詢操作,而不改變查...

資料結構 靜態查詢

靜態查詢表,意思是針對這個表進行靜態查詢,何為靜態,那就是不能動態修改表中內容,不能對錶進行增加 刪除。靜態查表表,有哪幾種基本辦法呢?順序查詢法 折半查詢法 分塊查詢法 順序查詢法,從佇列頭部逐個比對到末尾就可以了。儲存資料可以使用陣列或鍊錶,資料通常沒有非遞增 非遞減關係 折半查詢 針對有嚴格大...