順序查詢
基本流程:從線性表的一端開始,逐一查詢滿足條件的線性表元素,有則返回元素位置資訊,無則返回錯誤資訊。
#include using namespace std;
int seq_search(int arr, int len, int key)
}return -1;
}int main()
; int num = 6; //可以改為鍵盤輸入,這裡就不用了
int len = sizeof(arr)/sizeof(int);
int result = seq_search(arr, len, num);
if(result != -1)
else
return 0;
}
順序查詢引入「哨兵」
將陣列arr中的末尾(或者首位)元素設定為需要查詢的那個值,使得在迴圈過程中,不需要再判斷陣列下標是否越界。
#include using namespace std;
int seq_search(int arr, int key)
return i;
}int main()
int num = 6; //可以改為鍵盤輸入,這裡就不用了
int result = seq_search(arr, num);
if(result != 7)
else
return 0;
}
折半查詢
折半查詢也叫二分查詢,用於有序的順序表。
基本流程是:首先將需要查詢的值key與表中間位置元素比較。如果相等,則查詢成功並返回儲存位置。如果不等,則根據比較資訊,將接下來需要查詢的區間定位在前半或後半部分,再在相應的部分繼續進行以上操作。如此重複直到找到或返回錯誤資訊。
#include using namespace std;
int bin_search(int arr, int len, int key)
else if(arr[mid] > key)
else
}return -1;
}int main()
; int result = bin_search(arr, sizeof(arr)/sizeof(int), 4);
if(result == -1)
else
return 0;
}
順序查詢與折半查詢
includeusing namespace std const int max 10 順序查詢 int seqsearch1 int r,int n,int k return i 返回元素在陣列中的下標即元素的序號 int seqsearch2 int a,int n,int x 陣列a,n總數,...
順序查詢和折半查詢
順序查詢可以是線性表也可以是鍊錶,同是既可以是有序的也可以是無序。折半查詢僅適用於有序的線性表 include include define elemtype inttypedef struct sstable 表的資料結構 void creatss sstable st 建立線性表 void pr...
靜態查詢(順序查詢和折半查詢)
聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構 c語言版 書中的演算法實現一遍。現在開始第一彈。貴在堅持。順序查詢 演算法描述 include include 順序表的查詢 define eq a,b a b de...