導航:首頁 > 編程語言 > 折半查找c代碼

折半查找c代碼

發布時間:2023-07-05 10:54:39

① 用c語言實現折半查找

#include<stdio.h>

int find(int a[],int x,int n,int m)

{int i;

if(n>m)return -1;

i=(n+m)/2;

if(a[i]==x)return i;

if(a[i]>x)return find(a,x,n,i-1);

return find(a,x,i+1,m);

}

int main()

{

int a[20]={2,3,6,7,12,18,19,21,25,28,30,33,37,39,42,45,47,49,50,51};

int x,i;

printf("已有的數是: ");

for(i=0;i<20;i++)

printf("%d ",a[i]);

printf(" 請輸入要查找的數:");

scanf("%d",&x);

if((i=find(a,x,0,19))>=0)

printf("%d是第%d個數 ",x,i+1);

else printf("未找到%d ",x);

return 0;

}

② c語言編程實現「折半查找」的過程。

//參考代碼如下:
#include <stdio.h>
int main()
{
int i, j, n, k=0, isFound=0;
int num[15] = {88,86,75,74,61,56,52,43,39,34,31,22,18,16,8}; //測試數組
printf("請輸出一個整數:\n");
scanf("%d", &n);
i = (int)15/2; //對折位移量
j = (int)15/2; //取數「指針」
while(k<2)
{
i = (int)i/2;
if(i == 0) k++; //i==0 即折半到無可再折時,仍有最後一次比較,故以k做計數
//若未相等,計算下一循環指針的位置
if(n<num[j])
j = j + (i + 1);
else if(n>num[j])
j = j - (i + 1);
else
{
isFound = 1;
break; //若找到相等數,標記已找到並退出循環
}
}
//輸出結果
if(isFound)
printf("該數是數組中第%d個元素的值\n", j);
else
printf("查無此數!\n");
return 0;
}

③ C語言實現折半查找

#include<stdio.h>
intlook_up(inta[],intn,intx)
{
intleft=0,right=n-1,mid;
while(left<=right)
{
mid=(left+right)/2;
if(x==a[mid])
returnmid+1;//加一後才回是它的邏輯答位序
elseif(x<a[mid])
right=mid-1;
else
left=mid+1;
}
if(left>right)
return-1;
}
intmain()
{
inta[100],n,x,i,result;
scanf("%d",&n);
for(i=0;i<n-1;i++)
scanf("%d,",&a[i]);
scanf("%d",&a[i]);
scanf("%d",&x);
result=look_up(a,n,x);
if(result>=0)
printf("%d ",result);
else
printf("No ");
}

閱讀全文

與折半查找c代碼相關的資料

熱點內容
數控車床挑油槽怎麼編程 瀏覽:654
小米遙控車用什麼app 瀏覽:217
app在什麼周也可以找到 瀏覽:225
我的數據旁邊有個hd是什麼意思 瀏覽:215
速霸路電子狗升級 瀏覽:219
手機什麼app可以圈重點 瀏覽:858
蘋果手機桌面怎麼建文件夾歸類 瀏覽:779
net教程是什麼意思 瀏覽:167
手要格式化丟失的數據如何找回 瀏覽:48
什麼是py編程 瀏覽:951
學到的新招網路詞怎麼說 瀏覽:677
excel2010裁剪工具 瀏覽:498
u3d燈光貼圖烘焙教程 瀏覽:348
拼多多app怎麼轉接人工客服 瀏覽:465
QQ里語音在哪個文件夾 瀏覽:982
找司機工作的app靠譜的有哪些 瀏覽:783
電腦文件提示找不到改項目 瀏覽:815
製作3d數據處理用什麼軟體 瀏覽:746
網站暫停解析許可權是什麼問題 瀏覽:599
電腦右鍵壓縮文件到發送區了 瀏覽:635

友情鏈接