C語言 資料結構查詢 順序查詢及折半查詢

2021-07-06 01:41:35 字數 1584 閱讀 7877

《資料結構查詢

順序查詢和折半查詢》//

順序查詢

//思路

:從表中最後乙個記錄開始,逐個進行記錄的關鍵字和

//給定值的比較,若某個記錄的關鍵字和給定值比較相等,則

//返回返回記錄所在的位置,或查詢完所有記錄後還沒有發現

//符合的記錄,則查詢失敗。

#include

#include

#include

#include

#define n 10

typedef int datatype;//

定義比較的元素型別 //

靜態查詢表的順序儲存結構

typedef structsstable;

//建立乙個靜態表,內容為

20以內的隨機數

void createst(sstable* st,int n) 

st->length=n;}}

} //建立乙個靜態表,內容按從小到大排列,以便折半查詢

void createst_binary(sstable* st,int n) 

st->length=n;}}

} //列印出靜態表的內容

void print_sstable(sstable* st)

printf("\n"); }}

//順序查詢

(sequential search)

//思路

:從表中最後乙個記錄開始,逐個進行記錄的關鍵字和

//給定值的比較,若某個記錄的關鍵字和給定值比較相等,則

//返回返回記錄所在的位置,或查詢完所有記錄後還沒有發現

//符合的記錄,則查詢失敗。

//查詢成功:返回記錄所在位置

//查詢失敗:返回

0 int search_seq(sstable st,datatype key) //

折半查詢

(binary search)

//當記錄的

key按關係有序時可以使用折半查詢

//思路:對於給定

key值,逐步確定待查記錄所在區間,每次將搜尋空間減少一半(折半),

//直到查詢成功或失敗為止。

int search_binary(sstable st,datatype key)

if(key

high=mid-1;//

繼續在前半區間查詢

}else 

}return 0;//

查詢失敗}

//分塊查詢(只記錄思想)

//分塊查詢中,設記錄表長為

n,將表的

n個記錄分成

b=n/s

個塊,每個

s個記錄

//最後乙個記錄數可以少於

s個,且表分塊有序,即後乙個塊的所有

key值大於

//前乙個塊的所有

key值

//每塊對應乙個索引項,索引項記錄了該塊記錄的最大

key值和該塊第一記錄的指標(或序號)

//演算法://(

1)由索引表確定待查詢記錄所在的塊;//(

2)在塊內順序查詢。

int main()

C語言資料結構之查詢(順序查詢,折半查詢)

為了演示方便,順序查詢和折半查詢的資料儲存結構就直接採用陣列。1 順序查詢 順序查詢跟我們用迴圈遍歷進行暴力破解類似。直接看 define n 11 順序查詢 適用於線性表 intseq search int arr,int key 對,順序查詢就是這麼簡單。2 折半查詢 二分查詢 折半查詢僅適用於...

C語言資料結構順序表的順序查詢和折半查詢的功能

順序查詢演算法 又稱為線性查詢,主要用在 線性表 中進行查詢 通常分為 1 無序線性表的一般查詢 2 對關鍵字有序的順序表查詢 優缺點分析 缺點 當線性表的表長過於長時,平均查詢長度較大,效率低。優點 對順序表中資料元素的儲存沒有要求,順序儲存鏈式儲存均可。需注意 對於線性表的鏈式儲存只能使用順序查...

資料結構 順序查詢

5.小結 include include define initsize 10 初始化陣列長度 define elemtype int 順序查詢表型別定義 順序表 動態分配 typedef struct sstable 函式宣告 void inittable sstable st 1.初始化順序表 ...