⑴ C语言程序编写——折半查找法

#include <stdio.h>
int main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,1,0},i,j,put,m,count;
scanf("%d",&put);
i=14;
j=count=0;
m=(i+j)/2;
for(;j<15;j++)
{
if(a[j]!=put)
count++;
}
j=0;
if(count==15)
printf("无此数\n");
else
{
while(put!=a[m])
{
if(put>a[m])
{
while(put!=a[m])
{
if(put>a[m])
{
m=(m+j)/2;
}
else if(put<a[m])
{
m=(m+(i+j)/2)/2;
}
}
}
if(put<a[m])
{
while(put!=a[m])
{
if(put==a[i])
{
m=i;
}
else if(put>a[m])
{
m=(m+(i+j)/2)/2;
}
else if(put<a[m])
{
m=(m+i)/2;
}
}
}
}
printf("该数是数组中第%d个元素\n",m+1);
}
return 0;
}

⑵ c语言编程实现“折半查找”的过程。

折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。参考程序,希望对你有所帮助!
#include<stdio.h>
void main()
{
int a[20],x,i,start,end;
printf("input 20 numbers:\n");
for(i=0;i<20;i++) scanf("%d",&a[i]);
printf("please enter the number:\n");
scanf("%d",&x);
for(start=0,end=19;start<=end;)
{
i=start+(end-start)/2;
if (x==a[i])
{
printf("%d",i+1);
getch();
return;
}
else if (x>a[i]) end = i-1;
else start=i+1;
}
}