演算法思想
1.將n個資料元素"按塊有序"劃分為m塊(m ≤ n)。
2.每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";
3.即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;
4.而第2塊中任一元素又都必須小於第3塊中的任一元素,……
分塊查詢是折半查詢和順序查詢的一種改進方法,分塊查詢由於只要求索引表是有序的,對塊內節點沒有排序要求,因此特別適合於節點動態變化的情況。
/**
* 分塊查詢
* @author qiu
* 時間複雜度:o(log(m)+n/m)
*/public
class
blocksearch
}return-1
;}//二分查詢、查詢key所在的塊數
public
static
intshunxusearch
(int
index,
int key,
int m)
else
if(key)else
}//查詢完畢,high為key所在的前乙個塊的塊號
return high+1;
}public
static
void
main
(string[
] args)
;//建立索引表
int st2=
;int a=
blocksearch
(index,st2,3,
6); system.out.
println
(a);
}}
查詢之分塊查詢
分塊查詢又稱索引順序查詢,吸取順序查詢和折半查詢的優點 基本思想 將查詢表分為若干個子塊。塊內的元素可以無序,但塊件是有序的,即第乙個塊中的最大關鍵字小於第二塊中的所有關鍵字,依次類推。再建乙個索引表,索引表中的元素含有各塊的最大關鍵字和各塊中第乙個元素的位址,索引表按關鍵字有序排列。示意圖 查詢分...
程式改錯之分塊查詢
錯誤 include define maxsize 100 typedef struct indexelem indexelem index maxsize int indexsearch indexelem index,int m,int r,int n,int key i index high ...
查詢演算法 分塊查詢
分塊查詢也稱為索引順序表查詢。分塊查詢就是將順序表 主表 分成若干個子表,然後為每個子表建立乙個索引表,利用索引在其中乙個子表中查詢。兩部分 索引表 儲存順序表的每個子表的開始索引和最大值。順序表 主表所有資料存放的位置。子表內可以是無序的,但是子表之前面的子表中每個元素必須小於後面子表中的每個元素...