賀老師教學鏈結
c語言及程式設計高階
本課講解
順序查詢
#include
#define size 10
int main( )
; /*也可以通過鍵盤輸入等方式給出資料*/
int i;
int key; /*key表示待查詢資料*/
int index=-1; /*用index表示查詢結果——關鍵字key出現的位置*/
printf("input a key you want to search: ");
scanf("%d" , &key); /*輸入要查詢的關鍵字*/
for(i=0; iif(key == d[i]) /*在迴圈中逐個比較,如果key與某d[i]相等,表示找到了*/
if(index >= 0) /*index >= 0,迴圈一定是由break跳出的,代表找到了。這個條件也可以用iprintf("the index of the key is %d .\n", index);
else
/*沒有找到,index仍保持-1*/
printf("not found.\n");
return
0;}
二分查詢的實現
#include
#define n 10
int main( )
;/*通過初始化給出元素值*/
int first, last, mid; /*查詢中記錄下標的3個變數*/
int key; /*待查工的關鍵字*/
int index=-1; /*記錄查詢到的元素的下標,初值-1表示沒有找到*/
printf("input a key you want to search: ");
scanf("%d" , &key); /*輸入待查詢的關鍵字*/
first=0, last=n-1; /*first和last分別是首元素和末元素的下標*/
while(first<=last) /*若first>last,也就意味著迴圈該結束了,找不到,不必找了*/
else
if(key/*下一輪將在前半段找,故last=mid-1*/
last=mid-1;
else
/*下一輪將在後半段找,故first=mid+1*/
first=mid+1;
}if(index >= 0) /*輸出結果*/
printf("the index of the key is %d .\n", index);
else
printf("not found.\n");
return
0;}
不用比較的查詢演算法
#include
int search(int h, int key);
void store(int h, int data);
int main()
; int m, n;
int i;
for (i = 0; i < 6; i++)
scanf("%d", &m);
int result = search(data, m);
if (result)
printf("在陣列中找到.\n");
else
printf("沒有此資料!\n");
return0;}
int search(int d, int key)
void store(int d, int n)
用」除留餘數」雜湊函式定址,開放位址法解決衝突的雜湊方法
#include
void inserthash(int h, int len, int key);
int searchhash(int h, int len, int key);
#define n 13 /*n取素數*/
int main()
; /*本例中陣列中要儲存的均為正數,初始化為全0表示值為空*/
int key; /*待查關鍵字*/
int i;
for (i = 0; i < 6; i++) /*先演示儲存資料*/
printf("input a key you want to search: ");
scanf("%d" , &key); /*輸入待查詢的關鍵字*/
int index = searchhash(data,n, key); /*在長度為n的陣列data中查詢關鍵字key*/
if(index >= 0) /*輸出結果*/
printf("the index of the key is %d .\n", index);
else
printf("not found.\n");
return0;}
/*將值為key的關鍵字存入長度為n的陣列data中*/
void inserthash(int h, int len, int key)
h[i] = key; /*儲存關鍵字key*/
}/*在長度為n的陣列data中查詢關鍵字key,返回值為儲存資料的位置,-1代表沒找到*/
int searchhash(int h, int len, int key)
if (h[i] == 0) /*找到的是空元素,說明沒有找到*/
i = -1; /*返回-1將代表沒有找到*/
return i; /*返回結果*/
}
C語言及程式設計高階例程 24 查詢問題及其求解
賀老師教學鏈結 c語言及程式設計高階 本課講解 順序查詢 include define size 10 int main 也可以通過鍵盤輸入等方式給出資料 int i int key key表示待查詢資料 int index 1 用index表示查詢結果 關鍵字key出現的位置 printf inp...
C語言及程式設計高階例程 19 鍊錶應用
賀老師教學鏈結 c語言及程式設計高階 本課講解 猴子選大王 include include struct monkey int main else p2 next head 最後乙隻再指向第一只,成了乙個圓圈 下面要開始數了 p1 head for i 1 inext 圍成圈的,可能再開始從第一隻數...
C語言及程式設計初步例程 24 if語句的巢狀
賀老師教學鏈結 c語言及程式設計初步 本課講解 應用 分段函式求解 好程式 include int main else if x 6 else if x 10 else printf f n y return 0 不好的程式 include int main if x 2 x 6 if x 6 x ...