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

2021-10-22 15:32:49 字數 1127 閱讀 9469

順序查詢

typedef

struct

sstable ;

sstable st;

//定義順序表st

int

search_seq

(sstable st,keytype key)

改進:增加「哨兵」,將待查關鍵字key存入表頭

int

search_seq

(sstable st,keytype key)

順序查詢的特點:

優點:演算法簡單,邏輯次序無要求,且不同儲存結構均適用。

缺點:asl太長,時間效率太低

折半查詢:每次將待查記錄所在區間縮小一半

適用於有序線性表

表長n,low,high,mid分別指向待查元素所在區間的上界、下界和中點。key為給定的要查詢的值

int

search_bin

(sstable st,keytype key)

return

0; //順序表中不存在待查元素

}//非遞迴

折半查詢

優點:效率比順序查詢高

缺點:只適用於有序表,且限於順序儲存結構(對線性鍊錶無效)

分塊查詢(索引順序查詢)

順序法查詢效率:(n+1)/2

折半法查詢效率:log2(n+1)

分塊查詢效率:log2(n/s+1)+s/2 【s為每塊內部記錄個數,n/s為塊的數目】

優點:插入刪除容易,無需進行大量移動

缺點:要增加乙個索引表的儲存空間並對初始索引表進行排序演算法

適用:如果線性表既要快速查詢又經常動態變化,則可採用分塊查詢

查詢方法比較

順序查詢

折半查詢

分塊查詢

asl(平均查詢長度)

最大最小

中間表結構

有序表、無序表

有序表分塊有序

儲存結構

順序表、線性鍊錶

順序表順序表、線性鍊錶

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

1.定義 順序查詢是按照序列原有順序對陣列進行遍歷比較查詢的基本查詢演算法 2.原理 通過遍歷陣列來尋找值 3.實現 public static intordersearch int arry,int des return 1 1.定義 分查詢也稱折半查詢 binary search 它是一種效率較...

資料結構與演算法 線性表

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

資料結構與演算法 線性表

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