當前位置:首頁 » 編程語言 » 分塊查找c語言

分塊查找c語言

發布時間: 2023-04-17 23:18:16

A. C語言編寫數據結構查找演算法

實驗五 查找的實現
一、 實驗目的
1.通過實驗掌握查找的基本概念;
2.掌握順序查找演算法與實現;
3.掌握折半查找演算法與實現。
二、 實驗要求
1. 認真閱讀和掌握本實驗的參考程序。
2. 保存程序的運行結果,並結合程序進行分析。
三、 實驗內容
1、建立一個線性表,對表中數據元素存放的先後次序沒有任何要求。輸入待查數據元素的關鍵字進行查找。為了簡化演算法,數據元素只含一個整型關鍵字欄位,數據元素的其餘數據部分忽略不考慮。建議採用前哨的作用,以提高查找效率。
2、查找表的存儲結構為有序表,輸入待查數據元素的關鍵字利用折半查找方法進行查找。此程序中要求對整型量關鍵字數據的輸入按從小到大排序輸入。
一、順序查找
順序查找代碼:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("請輸入您要輸入的數據的個數:\n");
scanf("%d",&(s->length));
printf("請輸入您想輸入的%d個數據;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所輸入的數據為:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
inti=0;
s->r[s->length].key=k;
while(s->r[i].key!=k)
{

i++;
}
if(i==s->length)
{
printf("該表中沒有您要查找的數據!\n");
return-1;
}
else
returni+1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("請輸入您想要查找的數據的關鍵字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的數據的位置為:\n\n%d\n\n",keyplace);
return2;
}
順序查找的運行結果:
二、折半查找
折半查找代碼:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("請輸入您要輸入的數據的個數:\n");
scanf("%d",&(s->length));
printf("請由大到小輸入%d個您想輸入的個數據;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所輸入的數據為:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
intlow,mid,high;
low=0;
high=s->length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s->r[mid].key==k)
returnmid+1;
elseif(s->r[mid].key>k)
high=mid-1;
else
low=mid+1;
}
printf("該表中沒有您要查找的數據!\n");
return-1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("請輸入您想要查找的數據的關鍵字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的數據的位置為:\n\n%d\n\n",keyplace);
return2;
}
折半查找運行結果:
三、實驗總結:
該實驗使用了兩種查找數據的方法(順序查找和折半查找),這兩種方法的不同之處在於查找方式和過程不同,線性表的創建完全相同,程序較短,結果也一目瞭然。

B. 分塊查找(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賦值為該塊內第一個元素的起始位置
然後進一步查到元素

C. 關於C語言分塊查找問題

先分兩塊a,b,其中a任意個比b任意個都大,先判斷在a還是在b,繼續分,找,so easy

D. C語言經典編程282例的目錄

第1章 初識C語言 1
實例001 第一個C語言程序 2
實例002 一個完整的C語言程序 2
實例003 輸出名言 3
實例004 用TC 2.0打開文件 4
實例005 計算正方形的周長 5
第2章 簡單的C程序 6
實例006 輸出一個正方形 7
實例007 輸出一個三角形 8
實例008 一個簡單的求和程序 9
實例009 求10! 10
實例010 3個數由小到大排序 11
實例011 猴子吃桃 13
實例012 陽陽買蘋果 14
第3章 演算法入門 15
實例013 任意次方後的最後三位 16
實例014 計算某日是該年的第幾天 16
實例015 婚禮上的謊言 18
實例016 百元買百雞 19
實例017 打漁曬網問題 20
實例018 判斷三角形的類型 22
實例019 直接插入排序 23
實例020 希爾排序 25
實例021 冒泡排序 26
實例022 快速排序 27
實例023 選擇排序 28
實例024 歸並排序 29
實例025 二分查找 31
實例026 分塊查找 32
實例027 哈希查找 34
實例028 斐波那契數列 37
實例029 哥德巴赫猜想 38
實例030 尼科徹斯定理 39
第4章 常用數據類型 41
實例031 數值型常量的使用 42
實例032 字元型變數的使用 42
實例033 求100~200之間的素數 43
實例034 利用#輸出三角形 44
實例035 十進制轉換為二進制 45
實例036 n進制轉換為十進制 46
實例037 小球下落問題 48
實例038 巧分蘋果 49
實例039 老師分糖果 50
實例040 IP地址形式輸出 51
實例041 特殊的完全平方數 52
實例042 一數三平方 54
實例043 求等差數列 55
實例044 親密數 56
實例045 自守數 57
第5章 運算符與表達式 60
實例046 求二元一次不定方程 61
實例047 可逆素數 63
實例048 判斷閏年 64
實例049 黑紙與白紙 65
實例050 阿姆斯特朗數 67
實例051 最大公約數和最小公倍數 67
實例052 求一元二次方程的根 69
實例053 自然對數的底e的計算 70
實例054 滿足abcd=(ab+cd)2的數 70
實例055 整數加減法練習 71
實例056 判斷整倍數 73
實例057 階梯問題 73
實例058 乘積大於和的數 74
實例059 求各位數之和為5的數 75
第6章 數據輸入與輸出函數 77
實例060 使用字元函數輸入/輸出字元 78
實例061 輸出相對的最小整數 79
實例062 將小寫字母轉換為大寫字母 80
實例063 水池注水問題 80
實例064 用*號輸出圖案 81
實例065 輸出一個字元的前驅字元 82
實例066 求學生總成績和平均成績 83
實例067 迴文素數 84
第7章 選擇和分支結構程序設計 86
實例068 判斷偶數 87
實例069 判斷字母是否為大寫 88
實例070 檢查字元類型 89
實例071 求最低分和最高分 90
實例072 模擬自動售貨機 91
實例073 計算工資 93
實例074 平方和值判斷 94
實例075 加油站加油 95
實例076 簡單計算器 97
第8章 循環結構 98
實例077 使用while語句求n! 99
實例078 使用while為用戶提供
菜單顯示 100
實例079 一元錢的兌換方案 102
實例080 特殊等式 103
實例081 列印乘法口訣表 104
實例082 平方和運算的問題 105
實例083 求從鍵盤中輸入字元的個數 106
實例084 列印楊輝三角 108
實例085 求總數問題 109
實例086 綵球問題 110
實例087 新同學年齡 112
實例088 燈塔數量 113
實例089 計算12+22+…+102 114
實例090 循環顯示隨機數 115
實例091 賣西瓜 116
實例092 銀行存款問題 117
實例093 統計不及格的人數 118
實例094 猜數字游戲 119
第9章 數組 123
實例095 求各元素之和 124
實例096 使用二維數組保存數據 125
實例097 計算字元串中有多少個單詞 126
實例098 不使用strcpy()函數實現
字元串復制功能 127
實例099 逆序存放數據 129
實例100 相鄰元素之和 130
實例101 選票統計 131
實例102 使用數組統計學生成績 132
實例103 查找數組中的最值 134
實例104 判斷一個數是否存在數組中 135
實例105 求二維數組對角線之和 136
實例106 模擬比賽打分 137
實例107 矩陣的轉置 139
實例108 設計魔方陣 141
實例109 字元升序排列 142
實例110 在指定位置插入字元 144
實例111 刪除字元串中的連續字元 146
實例112 統計各種字元個數 147
實例113 字元串替換 148
實例114 迴文字元串 150
實例115 字元串加密和解密 151
實例116 對調最大數與最小數位置 153
第10章 函數編程基礎 155
實例117 輸出兩個數中的最大值 156
實例118 判斷素數 157
實例119 遞歸解決年齡問題 158
實例120 遞歸解決分魚問題 159
實例121 小數分離 160
實例122 求任意數的n次冪 161
實例123 固定格式輸出當前時間 163
實例124 設計函數計算學生平均身高 164
實例125 求數組元素中的最小值 165
實例126 列印1~5的階乘 166
實例127 求最大公約數和最小公倍數 167
實例128 求直角三角形的斜邊 168
實例129 相對的最小整數 169
實例130 當前時間轉換 170
實例131 顯示程序運行時間 171
實例132 顯示當前日期及時間 172
實例133 設置DOS系統日期 173
實例134 設置DOS系統時間 174
實例135 讀取並設置BIOS的時鍾 175
實例136 任意大寫字母轉小寫 176
實例137 字元串復制到指定空間 176
實例138 查找位置信息 177
實例139 復制當前目錄 179
實例140 產生唯一文件 180
實例141 不同亮度顯示 181
實例142 字母檢測 182
實例143 建立目錄 183
實例144 刪除目錄 184
實例145 對數組進行升序和降序排序 185
實例146 設置組合鍵 187
實例147 獲取當前日期與時間 188
實例148 獲取當地日期與時間 189
實例149 獲取格林尼治平時 190
實例150 設置系統日期 191
實例151 獲取BIOS常規內存容量 193
實例152 讀/寫BIOS計時器 194
實例153 獲取CMOS密碼 195
實例154 獲取Ctrl+Break消息 197
實例155 滑鼠中斷 198
實例156 設置文本顯示模式 200
實例157 顯卡類型測試 204
實例158 獲取系統配置信息 206
實例159 訪問系統temp中的文件 209
實例160 控制揚聲器聲音 210
實例161 獲取Caps Lock鍵狀態 211
實例162 獲取環境變數 212
實例163 貪吃蛇游戲 213
實例164 五子棋游戲 219
實例165 彈力球游戲 227
第11章 指針 235
實例166 使用指針實現整數排序 236
實例167 指向結構體變數的指針 237
實例168 使用指針輸出數組元素 238
實例169 使用指針查找數列中的
最大值和最小值 240
實例170 使用指針的指針輸出字元串 241
實例171 使用指向指針的指針對
字元串排序 242
實例172 使用返回指針的函數查找
最大值 244
實例173 使用指針連接兩個字元串 245
實例174 用指針實現逆序存放數
組元素值 247
實例175 用指針數組構造字元串數組 248
實例176 用指針函數輸出學生成績 249
實例177 尋找相同元素的指針 251
實例178 查找成績不及格的學生 252
實例179 使用指針實現冒泡排序 254
實例180 輸入月份號並輸出英文月份名 255
實例181 使用指針插入元素 256
實例182 使用指針交換兩個數組
中的最大值 257
實例183 輸出二維數組有關值 259
實例184 輸出二維數組任一行
任一列值 260
實例185 將若干字元串按照字母
順序輸出 262
實例186 用指向函數的指針比較大小 263
實例187 尋找指定元素的指針 265
實例188 字元串的匹配 266
第12章 常用數據結構 269
實例189 比較計數 270
實例190 找出最高分 271
實例191 信息查詢 272
實例192 候選人選票程序 274
實例193 計算開機時間 276
實例194 取出整型數據的高位元組數據 277
實例195 使用共用體存放學生和
老師信息 278
實例196 使用共用體處理任意類型數據 279
實例197 輸出今天星期幾 281
實例198 創建單向鏈表 282
實例199 創建雙向鏈表 284
實例200 創建循環鏈表 287
實例201 使用頭插入法建立單鏈表 289
實例202 雙鏈表逆序輸出 291
實例203 約瑟夫環 293
實例204 創建順序表並插入元素 294
實例205 合並兩個鏈表 296
實例206 單鏈表節點逆置 298
實例207 應用棧實現進制轉換 300
實例208 用棧實現行編輯程序 303
實例209 用棧設置密碼 306
實例210 括弧匹配檢測 310
實例211 用棧及遞歸計算多項式 313
實例212 鏈隊列 315
實例213 循環緩沖區問題 318
實例214 簡單的文本編輯器 321
第13章 位運算操作符 326
實例215 使二進制數特定位翻轉 327
實例216 將輸入的數左移兩位並輸出 327
實例217 編寫循環移位函數 328
實例218 取出給定16位二進制數
的奇數位 330
實例219 取一個整數的後四位 331
實例220 求一個數的補碼 332
實例221 普通的位運算 333
實例222 整數與0異或 334
第14章 存儲管理 335
實例223 使用malloc()函數分配內存 336
實例224 調用calloc()函數動態分
配內存 337
實例225 為具有3個數組元素的
數組分配內存 338
實例226 為二維數組動態分配內存 338
實例227 商品信息的動態存放 340
第15章 預處理和函數類型 341
實例228 用不帶參數的宏定義求
平行四邊形面積 342
實例229 使用宏定義實現數組值
的互換 343
實例230 編寫頭文件包含圓面積的
計算公式 344
實例231 利用宏定義求偶數和 345
實例232 利用文件包含設計輸出模式 346
實例233 使用條件編譯隱藏密碼 347
第16章 文件讀寫 349
實例234 關閉所有打開的文件 350
實例235 同時顯示兩個文件的內容 352
實例236 創建文件 353
實例237 格式化讀寫文件 355
實例238 創建臨時文件 357
實例239 成塊讀寫操作 358
實例240 隨機讀寫文件 360
實例241 以行為單位讀寫文件 362
實例242 查找文件 364
實例243 重命名文件 364
實例244 刪除文件 366
實例245 刪除文件中的記錄 367
實例246 文件內容復制 369
實例247 錯誤處理 370
實例248 合並兩個文件信息 373
實例249 統計文件內容 375
實例250 讀取磁碟文件 376
實例251 將數據寫入磁碟文件 378
實例252 顯示目錄內同類型文件 379
實例253 文件分割 382
實例254 文件加密 384
實例255 自毀程序 386
實例256 明碼序列號保護 388
實例257 非明碼序列號保護 389
實例258 愷撒加密 391
實例259 RSA加密 394
實例260 獲取當前磁碟空間信息 396
實例261 DES加密 398
實例262 獲取系統配置信息 403
實例263 獲取寄存器信息 405
第17章 圖形圖像處理 407
實例264 繪制直線 408
實例265 繪制矩形 409
實例266 繪製表格 411
實例267 繪制立體窗口 412
實例268 繪制橢圓 414
實例269 繪制圓弧線 415
實例270 繪制扇區 417
實例271 繪制空心圓 418
實例272 繪制箭頭 419
實例273 繪制正弦曲線 420
實例274 繪制綵帶 421
實例275 繪制黃色網格填充的橢圓 423
實例276 繪制紅色間隔點填充的
多邊形 424
實例277 繪制五角星 425
實例278 顏色變換 427
實例279 彩色扇形 428
實例280 輸出不同字體 429
實例281 相同圖案的輸出 431
實例282 設置文本及背景顏色 433

熱點內容
黨員e家賬號密碼是什麼 發布:2024-11-02 00:37:30 瀏覽:709
安卓微信後台怎麼關閉 發布:2024-11-02 00:36:49 瀏覽:719
s21更新了安卓12怎麼降級 發布:2024-11-02 00:35:11 瀏覽:99
編程要軟體嗎 發布:2024-11-02 00:34:59 瀏覽:235
androidcursor遍歷 發布:2024-11-02 00:27:40 瀏覽:767
網易我的世界地皮伺服器大全 發布:2024-11-02 00:24:20 瀏覽:964
光宇國際服怎麼安卓轉ios 發布:2024-11-02 00:14:23 瀏覽:170
魔獸世界單機資料庫 發布:2024-11-01 23:37:11 瀏覽:698
配置vlan後如何配置電腦ip 發布:2024-11-01 23:21:16 瀏覽:546
中鐵盾構機密碼是多少 發布:2024-11-01 23:07:21 瀏覽:708