導航:首頁 > 源碼編譯 > 實現分塊查找演算法

實現分塊查找演算法

發布時間:2023-03-12 21:28:28

⑴ 求分塊查找演算法 最好有代碼和詳細注釋

注意:採用「二分查找」時,初始的數組或其他線性表中的每個元素都必須是按一定的順序排列的(從大到小,或從小到大),
該演算法的基本思想:對一個有序數據序列,總是先把查找目標與該序列的中間的元素進行比較,我們假設該序列是由從小到大排列的,if(key > data[mid]),則key一定在data[mid]的又邊,於是,把mid到序列data[end]分成一塊,此時mid = (mid + end) / 2,依次類推

參考程序:

#include<stdio.h>
#define MAXSIZE 26 //定義索引表的最長長度
typedef char TYPE;

int blksearch(TYPE R[],TYPE K);
void main()
{
int num, i;
TYPE R[N + 1];
TYPE K;

for(i = 0;i<N;i++)
R[i]='a'+i;
printf("\nplease input the key number:\n");
K=getchar();
num=blksearch(R,K);

if(num!=-1)
printf("第%d個是關鍵字\n",num+1);
else
printf("查找失敗!\n");
}

int blksearch(TYPE R[],TYPE K) //分塊查找
{
int low1,mid,high1;
low1=0;
high1=N - 1; //二分查找區間上下界初值
while(low1<=high1)
{
mid=(low1+high1)/2;

if(K < R[mid])
high1=mid-1;
else
if(K > R[mid])
low1=mid+1;
else
return mid; //如果找到key,立即返回key的位置

}
return -1;// 只要上面的return語句沒執行,則原數組中無key,返回-1

}

⑵ 分塊查找(C語言)

i=idx[low1].low是塊中第一個元素的起始位置的值

int blksearch(sqlist r,index idx,find=0,hb;) // bn為塊個數 //
{ int i,;low=1,high1=bn,midl,find=0,hb;
while(low1<=high1&&!find)
{mid=(low1+high1)/2;
if(k<idx[mid1].key)high1=mid-1;
else if(k>idx[mid1],key)low1=mid1+1;
else{
low=mid1;
find=1;
}
到這里是初步鎖定要查的元素在那個塊,找到大的方向後 在塊里進行進一步的搜索
if(low1<bn)//如果low1的值沒有超過塊的總個數
i=idx[low1].low; //i賦值為該塊內第一個元素的起始位置
然後進一步查到元素

⑶ http://www.baidu .com/

們我現在有一個C++作業題不會做,特向你們求助,懇請你們能給我些幫助!!!下面是問題的題目及要求,謝謝你的幫助!
一、題目:用分塊查找方法解決在資料庫中查找與關鍵字相同記錄的問題
1. 基本要求:
(1)要求用C++模塊化設計的思想來完成程序的設計;
(2)要求各個功能分別使用函數來完成,主函數和各個函數分別存放在不同的.cpp文件中,要求使用頭文件;
(3)程序調試通過後,完成程序文檔的處理,加必要的注釋。
三、設計方法和基本原理
1. 問題描述:
在一組無序數列中查找某個數據,找到則輸出該數據,否則輸出未找到信息。
2. 問題的解決方案:
根據問題的描述,可以按照要求的功能採用結構化的設計思想。
(1) 數列的賦值要求編寫獨立函數實現;
(2) 將無序數列排序為有序數列可以用「拉鋸法」排序法也可以用其他方法實現,並編寫獨立函數;
(3) 分塊查找的演算法用獨立函數實現
四、主要技術問題的描述
根據三的分析,主要問題在於:
1、排序演算法的實現(不限方法)
2、分塊查找方法的實現
分塊查找又索引查找,它主要用於「分塊有序」表的查找。所謂「分塊有序」是指將線性表L(一維數組)分成m個子表(要求每個子表的長度相等),且第i+1個子表中的每一個項目均大於第i個子表中的所有項目。「分塊有序」表應該包括線性表L本身和分塊的索引表A。因此,分塊查找的關鍵在於建立索引表A。
(1)建立索引表A(二維數組)
索引表包括兩部分:關鍵字項(子表中的最大值)和指針項(子表的第一項在線性表L中位置)
索引表按關鍵字有序的。
例如:線性表L(有序)為:1 2 3 4 5 6 7 8 9 10 11 12
分成m=3個子表:{1 2 3 4} {5 6 7 8} {9 10 11 12}
索引表A:二維數組:第一列為每個子表的最大值 ,第二列為每個子表的起始地址
即: 4 0
8 4
12 8

⑷ 分塊查找演算法中如何對數據分塊

可以實現確定待查找數據的上限和下限,
然後對該區間等分N塊,
那麼這N塊就可以作為分塊查找的塊,
然後將原數組中的元素按區間插入進去,
當然,這樣劃分不能保證每個塊中的元素個數相等,
但是,分塊查找演算法並不嚴格要求每塊中的元素的個數相等。

閱讀全文

與實現分塊查找演算法相關的資料

熱點內容
rar鎖定壓縮文件 瀏覽:869
安卓id號碼怎麼更換 瀏覽:522
db2如何連接伺服器資料庫 瀏覽:628
wordtopdf轉換 瀏覽:840
雲伺服器在哪設置ftp 瀏覽:620
黑客社會工程學攻擊pdf 瀏覽:996
專業中穎單片機程序開發 瀏覽:424
python多進程多線程實例 瀏覽:637
山東濟南生產伺服器雲主機 瀏覽:310
演算法員跳槽四年 瀏覽:730
秦九昭演算法v0怎麼求 瀏覽:384
斗魚java 瀏覽:896
程序員對老師的感謝 瀏覽:29
什麼app能查看銀行卡照片 瀏覽:24
win7pdf虛擬列印 瀏覽:332
程序員喜歡的女生條件 瀏覽:123
阿里雲伺服器ip搭建教程 瀏覽:85
解壓和拉伸這一動畫的原理是什麼 瀏覽:740
tbc戰士的命令怒吼 瀏覽:481
idea快捷鍵看源碼 瀏覽:976