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

2021-10-06 16:42:46 字數 1637 閱讀 5147

順序查詢演算法:又稱為線性查詢,主要用在—線性表—中進行查詢

通常分為:1—無序線性表的一般查詢;

2—對關鍵字有序的順序表查詢;

優缺點分析:

缺點:當線性表的表長過於長時,平均查詢長度較大,效率低。

優點:對順序表中資料元素的儲存沒有要求,順序儲存鏈式儲存均可。

需注意:對於線性表的鏈式儲存只能使用順序查詢.

折半查詢,又稱二分查詢,它僅適用於有序的順序表

首先將給定值key與表中間位置元素的關鍵字比較,若相等,則查詢成功,返回該元素的儲存位置;(例如,在查詢表公升序排列時,若給定值key大於中間元素的關鍵字,則所查詢的關鍵字只可能在後半部分)若不等,則所需查詢的元素只能在中間元素以外的前半部分或後半部分中;然後在縮小範圍內繼續進行同樣的查詢,如此重複直到找到為止,若查詢不成功,返回查詢失敗資訊

優缺點分析:

折半查詢方法的優點:折半查詢的優點是比較次數少,查詢速度快,平均效能好;

折半查詢方法的缺點:折半查詢的缺點是:要求待查表為有序表,且插入刪除困難。

因此:折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

目的是:⑴ 輸入一批整型資料,建立順序表,然後用順序查詢;

⑵ 輸入一批有序整型資料(如從小到大),然後用折半查詢,查詢一給定的整數。

#include

#define maxsize 20

//全域性定義

#define ok 1

#define overflow -2

typedef

struct

elemtype;

typedef

struct

sqlist;

intinitlist

(sqlist &l)

void

display

(sqlist &l)

//自定義輸出函式,將順序表的key值輸出。

void

get(sqlist &l,

int size)

//3.自定義取值函式利用迴圈依次為elem[i].key取值,

}int

search

(sqlist l,

int key)

//自定義順序查詢函式,在順序表l中順序查詢其關鍵字等於key的資料元素,若找到,則函式值為該元素在表中的位置,否則為0.

intsearch_bin

(sqlist l,

int key)

//6.自定義折半查詢函式,置查詢區間初值,low為1,high為表長;當low小於等於high時,mid取low和high的中間值,將給定值key與中間位置記錄的關鍵字進行比較,若查詢成功返回mid,若不相等則利用中間位置記錄將表對分成前後兩個子表。如果key比中間位置記錄的關鍵字小,則high取為mid-1,否則low取為mid+1;迴圈結束,說明查詢區間為空,則查詢失敗,返回0.

c語言資料結構第二版(嚴蔚敏、李冬梅)著

資料結構順序表的查詢 資料結構 2 1順序表

線性結構是資料結構中最基礎 最簡單的一種資料結構型別,其中最典型的就是線性表 具有 相同特性 的資料元素的 有限序列 相同特性 所有元素屬於同一資料型別 有限資料元素個數是有限的 序列資料元素由邏輯序號唯一確定 用邏輯序號來確定的特性使得線性表中可以有多個相同值的元素 線性表中所含元素的個數叫做線性...

C語言資料結構 順序表

資料結構的一些講解,供學習者參考,也順帶作為複習 線性表的順序儲存是指在記憶體中用位址連續的一塊儲存空間順序存放線性表的各元素,用這種儲存形式儲存的線性表稱為順序表。因為記憶體中的位址空間是線性的,因此,用物理上的相鄰實現資料元素之間的邏輯相鄰關係既是簡單又自然的。將資料儲存區data和指標last...

資料結構 順序表(C語言)

seqlist.h include include define maxsize 100 typedef struct seqlisttype void seqlistinit seqlisttype sl 初始化順序表 int seqlistlength seqlisttype sl 返回順序表的...