一 、前提條件:對分查詢的前提是待查詢的資料必須是有序的
二、思想:對分查詢是一種效率很高的查詢方法,但被查詢的資料必須是有序(例如非遞減有序)的。對分查詢首先將查詢鍵與有序陣列內處於中間位置的元素進行比較,如果中間位置上的元素內的數值與查詢鍵不同,根據陣列元素的有序性,就可確定應該在陣列的前半部分還是後半部分繼續進行查詢;在新確定的範圍內,繼續按上述方法進行查詢,直到獲得最終結果。
在陣列中的資料是有序的,如果是增序的,是指下標越小的陣列元素中儲存的資料也越小,減序則相反。設陣列變數d中儲存了n個互不相同的資料,則陣列變數d中的資料是增序時,有:
d(1)
三、優勢
由於對分查詢沒查詢一次,查詢範圍就將縮小一半,因此效率要遠遠高於順序查詢。
c語言**實現:
#ifndef binarysearch_h
#define binarysearch_h
#define notfound -1
#include
int binarysearch(int *,int ,int );
#endif
#include"binarysearch.h"
int binarysearch(int array , int x, int size)
else if(array[mid]>x)
else
return mid; }
return notfound; }
#include"binarysearch.h"
int main() ;
int size = sizeof(array)/sizeof(int);
int x = 5;
int index = binarysearch(array,x,size);
printf("the index is %d\n",index);
return 0; }
資料結構之查詢演算法
在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...
資料結構48 資料結構之查詢演算法
在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...
資料結構之查詢演算法總結
基礎知識 二分查詢演算法 有序表 順序儲存 複雜度o logn 一般用於強調有序陣列查詢時。雜湊表 o 1 時間根據關鍵字,得到所需的值。二叉搜尋樹 排序樹 根節點左邊值小於根結點,右邊值大於根結點。int binary search int data,int length,int key retu...