資料結構與演算法 線性表的查詢

2021-10-09 10:30:09 字數 1751 閱讀 7444

1.定義:

順序查詢是按照序列原有順序對陣列進行遍歷比較查詢的基本查詢演算法

2.原理:

通過遍歷陣列來尋找值

3.**實現:

public

static

intordersearch

(int

arry,

int des)

return-1

;}

1.定義:分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列

2.原理:

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

3.**實現:

public

static

intbinarysearch

(integer[

] srcarray,

int des)

else

if(des < srcarray[middle]

)else

}//若沒有,則返回-1

return-1

;}

1.定義:分塊查詢是折半查詢和順序查詢的一種改進方法,分塊查詢由於只要求索引表是有序的,對塊內節點沒有排序要求,因此特別適合於節點動態變化的情況。

2.原理:

分塊查詢要求把乙個大的線性表分解成若干塊,每塊中的節點可以任意存放,但塊與塊之間必須排序。假設是按關鍵碼值非遞減的,那麼這種塊與塊之間必須滿足已排序要求,實際上就是對於任意的i,第i塊中的所有節點的關鍵碼值都必須小於第i+1塊中的所有節點的關鍵碼值。此外,還要建立乙個索引表,把每塊中的最大關鍵碼值作為索引表的關鍵碼值,按塊的順序存放到乙個輔助陣列中,顯然這個輔助陣列是按關鍵碼值費遞減排序的。查詢時,首先在索引表中進行查詢,確定要找的節點所在的塊。由於索引表是排序的,因此,對索引表的查詢可以採用順序查詢或折半查詢;然後,在相應的塊中採用順序查詢,即可找到對應的節點。

3.**實現:

//index代表索引陣列,st2代表待查詢陣列,keytype代表要查詢的元素,m代表每塊大小

public

static

intblocksearch

(int

index,

int[

]st2,

int keytype,

int m)

}return-1

;}public

static

intshunxusearch

(int

index,

int keytype)

int i=1;

while

((index[i-1]

&&(index[i]

>keytype)

)return i;

return-1

;

資料結構與演算法 線性表的查詢

順序查詢 typedef struct sstable sstable st 定義順序表stint search seq sstable st,keytype key 改進 增加 哨兵 將待查關鍵字key存入表頭 int search seq sstable st,keytype key 順序查詢的...

資料結構與演算法 線性表

概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...

資料結構與演算法 線性表

n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...