順序查詢 折半查詢 引索順序表查詢的實現

2021-06-02 00:58:27 字數 1138 閱讀 4819

前幾天跟大家粗劣的介紹了一下這幾種查詢方法,現在在下再詳細一點點介紹(技術不好,請見諒!)

1,順序查詢

顧名思義就是按順序乙個接著乙個去查詢啦!

我們可以先建立乙個順序表

#define maxsize 100

typedef struct 

datatype;

typedef struct 

sstable;

然後呢,就乙個接乙個查詢,實現方法

int seqsearch(sstable s, datatype x)

if( s.list[i].key == x.key )

else}

其實這種方法是很容易想到的,只要跟著順序表乙個乙個找就是了

2,折半查詢

這種方法還是需要一點點技術的,他比上面的方法要快一些。他的原理其實也不難:

在乙個有序排列中,比如:9,23,26,32,47

首先先要確定low=9、high=47、mid=26(第乙個,最後乙個,中間乙個)

如果我們查詢的是32的話 ,因為32大於mid,所以就在後部分找,這樣就可以把時間縮小一半

實現方法為:

int  binarysearch(sstable s, datatype x)

else if( s.list[mid].key > x.key )

else if( s.list[mid].key }

3,引索順序不表查詢

引索順序表的查詢就是把順序表分成幾個單元,然後為這幾個單元建立引索,利用引索在其中乙個單元中進行查詢。

我們先建立乙個引索表

typedef struct

indextable[indexsize];

然後就可以進行查詢了,查詢的**如下:

int seqindexsearch(sstable s, indextable t , int m, datatype x) }

if( i>= m )

j=t[i].index;   //要查詢的元素在第j單元

if( i

else

while( j

else

j++;

}return -1;}

上面就是三種基本的查詢方法,不知道大家能不能明白?!

順序查詢 折半查詢

順序查詢 基本流程 從線性表的一端開始,逐一查詢滿足條件的線性表元素,有則返回元素位置資訊,無則返回錯誤資訊。include using namespace std int seq search int arr,int len,int key return 1 int main int num 6 ...

順序表的順序查詢和折半查詢

順序查詢 include using namespace std intseqsearch int r,int n,int k return i int main int k cout 請輸入要查詢的數 k for int i 1 i n i cout 該數在陣列中的位置為 cout seqsear...

靜態查詢表 順序查詢 折半查詢 分塊查詢

引言 除去各種線性和非線性的資料結構外,還有一種在實際應用中大量使用的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。對查詢表經常進行的操作有 1 查詢某個 特定的 資料元素是否在查詢表中 2 檢索某個 特定的 資料元素的各種屬性 3 在查詢表中插入乙個資料元素 4 從查詢表中刪去某個資料...