大學生新聞網,大學生新聞發布平臺
大學生新聞網
大學生新聞大學生活校園文學大學生村官
社會實踐活動社會實踐經歷社會實踐報告社會實踐總結社會實踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名專科排名學校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學生就業
英語學習計算機學習電氣工程機械工程經濟管理建筑設計財務會計
申請書證明書檢討書自薦信演講稿心得體會調查報告讀后感求職信推薦信其它范文

C語言分塊查找算法,索引順序查找算法

例如,采用分塊查找法在有序表 11、12、18、28、39、56、69、89、96、122、135、146、156、256、298 中查找關鍵字為 96 的元素。
査找特定關鍵字元素個數為 15,要求用戶輸入有序表各元素,程序輸出査找成功與否,若成功,還顯示元素在有序表中的位罝。

實現過程:
(1)定義結構體 index,用于存儲塊的結構,并定義該結構體數組 index_table。
(2)自定義函數 block_search(),實現分塊查找。

(3) main() 函數作為程序的入口函數。程序代碼如下:

#include <stdio.h>
struct index    //定義塊的結構
{
    int key;    //塊的關鍵字
    int start;    //塊的起始值
    int end;    //塊的結束值
}index_table[4];    //定義結構體數組
 
int block_search(int key,int a[])    //自定義實現分塊查找
{
    int i,j;
    i=1;
    while(i<=3&&key>index_table[i].key)    //確定在哪個塊中
        i++;
    if(i>3)    //大于分得的塊數,則返回0
        return 0;
    j=index_table[i].start;    //j等于塊范圍的起始值
    while(j<=index_table[i].end&&a[j]!=key)    //在確定的塊內進行順序查找
        j++;
    if(j>index_table[i].end)    //如果大于塊范圍的結束值,則說明沒有要査找的數,j置0
        j = 0;
    return j;
}
 
int main()
{
    int i,j=0,k,key,a[16];
    printf("請輸入15個數:\n");
    for(i=1;i<16;i++)
        scanf("%d",&a[i]);    //輸入由小到大的15個數
    for(i=1;i<=3;i++)
    {
        index_table[i].start=j+1;    //確定每個塊范圍的起始值
        j=j+1;
        index_table[i].end=j+4;    //確定每個塊范圍的結束值
        j=j + 4;
        index_table[i].key=a[j];    //確定每個塊范圍中元素的最大值
    }
    printf("請輸入你想査找的元素:\n");
    scanf("%d",&key);    //輸入要查詢的數值
    k=block_search(key,a);    //調用函數進行杳找
    if(k!=0)
        printf("查找成功,其位置是:%d\n",k);    //如果找到該數,則輸出其位置
    else
        printf("查找失敗!");    //若未找到,則輸出提示信息
    return 0;
}
運行結果:
請輸入15個數:
11 12 18 28 39 56 69 89 96 122 135 146 156 256 298
請輸入你想査找的元素:
96
查找成功,其位置是:9

技術要點:
分塊査找也稱為索引順序査找,要求將待查的元素均勻地分成塊,塊間按大小排序,塊內不排序,所以要建立一個塊的最大(或最小)關鍵字表,稱為索引表。



本實例中將給出的 15 個數按關鍵字大小分成了 3 塊,這 15 個數的排列是一個有序序列,也可以給出無序序列,但必須滿足分在第一塊中的任意數都小于第二塊中的所有數,第二塊中的所有數都小于第三塊中的所有數。當要査找關鍵字為 key 的元素時,先用順序杳找在已建好的索引表中查出 key 所在的塊中,再在對應的塊中順序查找 key,若 key 存在,則輸出其相應位置,否則輸出提示信息。
    作者:大學生新聞網    來源:大學生新聞網
    發布時間:2025-03-05    閱讀:
    掃一掃 分享悅讀
  • C語言二分查找算法,折半查找算法
  • 本實例采用二分查找法查找特定關鍵字的元素。要求用戶輸入數組長度,也就是有序表的數據長度,并輸入數組元素和査找的關鍵字。
  • 03-05 關注:0
  • C語言歸并排序算法
  • 用歸并排序法對一組數據由小到大進行排序,數據分別為 695、458、362、789、12、 15、163、23、2、986。
  • 03-05 關注:0
  • C語言選擇排序算法
  • 用選擇排序法對一組數據由小到大進行排序,數據分別為 526、36、2、369、56、45、78、92、125、52。
  • 03-05 關注:0
  • C語言快速排序算法
  • 用快速排序法對一組數據由小到大進行排序,數據分別為 99、45、12、36、69、22、62、 796、4、696。
  • 03-05 關注:0
  • C語言直接插入排序算法
  • 插入排序是把一個記錄插入到已排序的有序序列中,使整個序列在插入該記錄后仍然有序。插入排序中較簡單的種方法是直接插入排序
  • 03-03 關注:3
  • C語言冒泡排序算法
  • 用冒泡排序法對任意輸入的 10 個數按照從小到大的順序進行排序。
  • 03-03 關注:5
主站蜘蛛池模板: 亚洲av永久无码精品三区在线4| 日本特黄特色aa大片免费| 正点嫩模大尺度写真在线视频| 波多野结衣系列痴女| 正在播放国产美人| 欧美zoozzooz性欧美| 日韩在线一区二区三区免费视频| 日本高清免费不卡视频| 新婚熄与翁公试婚小说| 婷婷久久久五月综合色| 在线播放真实国产乱子伦| 国产精品亚洲片在线观看不卡| 国产成人mv在线播放| 啊灬啊别停灬用力啊岳| 亚洲综合在线一区二区三区| 亚洲精品欧美综合| 亚洲欧洲中文日产| 久久无码人妻一区二区三区 | 老师办公室被吃奶好爽在线观看 | AV无码久久久久不卡网站下载| 668溜溜吧成人影院| 香蕉免费一级视频在线观看| 美女下面直流白浆视频| 污视频免费在线观看| 日韩欧美国产三级| 婷婷六月天在线| 国产精品一区二区在线观看| 国产一级毛片大陆| 人人妻人人玩人人澡人人爽| 亚欧洲精品在线视频免费观看| 三上悠亚精品一区二区久久| 18女人腿打开无遮掩免费| 老司机激情影院| 欧美性猛交xxxx乱大交丰满| 无翼乌全彩我被闺蜜男口工全彩 | 2021年国产精品久久| 草莓视频污在线观看| 欧美精品在线视频| 无码人妻精品一二三区免费| 国产超级乱淫视频播放免费| 国产成人手机高清在线观看网站|