當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 操作系統 » c二分查找演算法

c二分查找演算法-九游会j9娱乐平台

發布時間: 2024-11-17 06:48:19

c語言二分查找法

#include

int binfind(int val[] , int num , int value)
{
int start = 0;
int end = num - 1;
int mid = (start end)/2;
while(val[mid] != value && start < end)
{
if (val[mid] > value)
{
end = mid - 1;
}
else if (val[mid] < value)
{
start = mid 1;
}
mid = ( start end )/2;
}
if (val[mid] == value)
return mid;
else
return -1;
}

int main()
{
int nums[] = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563};
int result = binfind(nums , sizeof(nums) / sizeof(nums[0]) , 45);
if (result < 0)
{
printf("查無此數");
}

}

㈡ 一個c語言二分查找的問題 麻煩大神看看我的程序哪裡有錯誤 幫我改正

#include
#include

voidfind(inta[],intnum,intvalue)
{
intstart=0;
intend=num-1;
intmid=(start end)/2;
while((start{
if(a[mid]>value)
{
end=mid-1;
}
elseif(a[mid]{
start=mid 1;
}
mid=(start end)/2;
}
if(a[mid]==value)
{
printf("yes! ");
}
else
{
printf("no! ");
}
}
intmain()
{
inti,n,m,*f1,*f2;
scanf("%d",&n);
f1=(int*)malloc(n*sizeof(int));
for(i=0;i{
scanf("%d",&f1[i]);
}
/*for(i=0;i{
printf("%d ",f1[i]);
}*/
scanf("%d",&m);
f2=(int*)malloc(m*sizeof(int));
for(i=0;i{
scanf("%d",&f2[i]);//這里要加上&
}
for(i=0;i{
find(f1,n,f2[i]);
}
return0;
}

f2=(int *)malloc(m*sizeof(int));
for (i=0;i{
scanf_s("%d",&f2[i]);//這里要加上&
}


其它邏輯應該正確。

㈢ c語言二分查找區求根

修改你的程序後得到是這樣的

這個在語法上沒有錯了;
#include
#include
void main()
{
printf("方程為x*x*x-x-1=0.");
float m,n,mid;
double b,c,d;
printf("請輸入區間:");
scanf("%f",&m);
scanf("%f",&n);
int s=1;
b=m*m*m-m-1;
c=n*n*n-n-1;
if(b*c>0.00)
printf("該方程在此區間沒有根!");
else if(b*c==0.00)
{
if(b==0.00)
printf("該方程根為%f\n",m);
else if(c==0.00)
printf("該方程根為%f\n",n);
}
else if(b*c<0.00)
{

while(s!=0)
{
mid=(m n)/2;
d=mid*mid*mid-mid-1;
if(d==0.00)
{
printf("根為%f\n",mid);
s=0;
}
else
if(d*b<0)
{
if(fabs(d-b)<=0.001000)
{
printf("根為%f\n",mid);
s=0;
}
else
{
n=mid;
}
}
else if(d*c<0)
{
if(fabs(d-c)<=0.001000)
{
printf("根為%f\n",mid);
s=0;
}
else
{
m=mid;
}
}
}
}
}

你試試看
不行再跟我m下;

㈣ 用c語言編寫順序查找和二分查找(折半查找)

順序查找:在一個已知無序隊列中找出與給定關鍵字相同的數的具體位置。原理是讓關鍵字與隊列中的數從第一個開始逐個比較,直到找出與給定關鍵字相同的數為止。復雜度為o(n).

二分查找又稱折半查找,它是一種效率較高的查找方法。
【二分查找要求】:1.必須採用順序存儲結構 2.必須按關鍵字大小有序排列。
【優缺點】折半查找法的優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用於不經常變動而查找頻繁的有序列表。
演算法思想】首先,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查找關鍵字,則進一步查找前一子表,否則進一步查找後一子表。
重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。
【演算法復雜度】假設其數組長度為n,其演算法復雜度為o(log(n))

#include

//二分查找:
int search(int a[],int x,int n) //x為要查找的元素,n為數組長度
{
int mid=0;
int low=0;
int high=n;
while(low<=high)
{
mid=(low high)/2;
if(a[mid]==x)
{ return mid; }
else if(x { high=mid-1; }
else
{ low=high 1; }
}
return -1;
}
//順序查找:
int search1(int a[],int x,int n) //x為要查找的元素,n為數組長度
{
int i;
for(i=0;i {
if(a[i]==x)
return i;
}
return -1;
}

int main()
{
int i,a[10],x;
for(i=0;i<10;i )
scanf("%d",&a[i]);
printf("請輸入要查找的元素");
scanf("%d",&x);
if(search(a,x,10)!=-1)printf("查找的元素在數組中的位置為%d.\n",search(a,x,10));
else printf("該元素不在數組中\n");
if(search1(a,x,10)!=-1)printf("查找的元素在數組中的位置為%d.\n",search1(a,x,10));
else printf("該元素不在數組中\n");
return 0;
}

熱點內容
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:193
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
經典矩陣c語言 發布:2024-11-19 08:56:23 瀏覽:268
网站地图