演算法(查詢)
順序查詢
Java程式碼
/**順序查詢平均時間複雜度 O(n)
* @param searchKey 要查詢的值
* @param array 陣列(從這個陣列中查詢)
* @return 查詢結果(陣列的下標位置)
*/
public static int orderSearch(int searchKey,int[] array){
if(array==null||array.length<1)
return -1;
for(int i=0;i<array.length;i++){
if(array[i]==searchKey){
return i;
}
}
return -1;
}
二分法查詢
/**
* 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。 【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。
*
* @param array
* 有序陣列 *
* @param searchKey
* 查詢元素 *
* @return searchKey的陣列下標,沒找到返回-1
*/
public static int binarySearch(int[] array, int searchKey) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (searchKey == array[middle]) {
return middle;
} else if (searchKey < array[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
3.分塊查詢
a. 首先將查詢表分成若干塊,在每一塊中資料元素的存放是任意的,但塊與塊之間必須是有序的(假設這種排序是按關鍵字值遞增的,也就是說在第一塊中任意一個資料元素的關鍵字都小於第二塊中所有資料元素的關鍵字,第二塊中任意一個資料元素的關鍵字都小於第三塊中所有資料元素的關鍵字,依次類推);
b. 建立一個索引表,把每塊中最大的關鍵字值按塊的順序存放在一個輔助陣列中,這個索引表也按升序排列;
c. 查詢時先用給定的關鍵字值在索引表中查詢,確定滿足條件的資料元素存放在哪個塊中,查詢方法既可以是折半方法,也可以是順序查詢。
d. 再到相應的塊中順序查詢,便可以得到查詢的結果。
分塊查詢
/**
* 分塊查詢
*
* @param index
* 索引表,其中放的是各塊的最大值
* @param st
* 順序表,
* @param key
* 要查詢的值
* @param m
* 順序表中各塊的長度相等,為m
* @return
*/
public static int blockSearch(int[] index, int[] st, int key, int m) {
// 在序列st陣列中,用分塊查詢方法查詢關鍵字為key的記錄
// 1.在index[ ] 中折半查詢,確定要查詢的key屬於哪個塊中
int i = binarySearch(index, key);
if (i >= 0) {
int j = i > 0 ? i * m : i;
int len = (i + 1) * m;
// 在確定的塊中用順序查詢方法查詢key
for (int k = j; k < len; k++) {
if (key == st[k]) {
System.out.println("查詢成功");
return k;
}
}
}
System.out.println("查詢失敗");
return -1;
}
相關文章
- 查詢演算法__插值查詢演算法
- 查詢演算法__二分查詢演算法
- 查詢演算法__Fibonacci查詢演算法
- 查詢演算法演算法
- 演算法 - 查詢演算法
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- 查詢演算法之二分查詢演算法
- 查詢演算法(上)演算法
- 查詢演算法(下)演算法
- Java 查詢演算法Java演算法
- 常用查詢演算法演算法
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 插值查詢演算法演算法
- 子字串查詢演算法字串演算法
- 雜湊查詢演算法演算法
- 線性查詢演算法演算法
- 常用查詢演算法 (轉)演算法
- 分塊查詢【大規模資料查詢演算法優化】【索引順序查詢】演算法 PHP 版演算法優化索引PHP
- php查詢演算法的理解PHP演算法
- 七大查詢演算法演算法
- 演算法-->折半查詢(快排)演算法
- 二分查詢演算法演算法
- 常用的 STL 查詢演算法演算法
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- 如何找東西?查詢演算法之順序查詢和二分查詢詳解演算法
- 【演算法】二分查詢與暴力查詢(白名單過濾)演算法
- 路徑查詢演算法應用之A*演算法演算法
- 演算法之逆序對兒查詢演算法
- 查詢演算法及雜湊表演算法
- 【筆記】靜態查詢演算法筆記演算法
- C#演算法設計查詢篇之03-插值查詢C#演算法
- 查詢與排序01,線性查詢,時間複雜度,演算法排序時間複雜度演算法
- 資料結構與演算法——查詢演算法-斐波那契(黃金分割法)查詢資料結構演算法
- 資料結構與演算法:查詢演算法資料結構演算法
- Algorithm-search 查詢演算法 pythonGo演算法Python
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴