靜態查詢(順序查詢和折半查詢)

2021-08-09 15:00:34 字數 1028 閱讀 3678

聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構(c語言版)書中的演算法實現一遍。現在開始第一彈。貴在堅持。

順序查詢:

演算法描述

#include

#include

//順序表的查詢

#define eq(a, b) ((a) == (b))

#defineelemtypeint

typedef structsstable;

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

int search_seq(sstable st, elemtype key)

int main()

s1.elem=a;

s1.length=5;

int c=search_seq(s1,key);

printf("%d\n",c);

}效能分析:

asl(successful)=(n+1)/2;

asl(f)=n+1;

asl(平均)=(asl(s)+asl(f))/2=3/4(n+1);

折半查詢:

#include

#include

//折半查詢演算法

typedef structsstable;

int search_bin(sstable s1,int key,int &n)

//沒有查詢到

return 0;

}int main()

;s1.elem=a;

int result=search_bin(s1,7,n);

printf("元素所在位置的陣列下標為:%d\n",result);

printf("查詢的次數為:%d\n",n);

}效能分析:

效率比較:折半查詢》順序查詢

靜態查詢 順序查詢和折半查詢法

一 靜態查詢 只是起查詢或檢索的作用,不涉及插入 刪除,反之為動態查詢。二 順序查詢 順序查詢過程中往往設定監視哨,在查詢過程中不用每一步都檢查整個表是否查詢完畢。假設,每個元素的查詢概率相同,順序查詢成功時平均查詢長度為 n 1 2 順序查詢不成功時平均查詢長度為 n 1 4 考慮到查詢不成功的情...

靜態查詢(順序 折半)

include include void seqsearch int a,int r 順序查詢 if i 0 printf 元素所在位置 d n i else printf 沒有該元素!int binsearch1 int a,int r 折半查詢 非遞迴 return 0 int binsearc...

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

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