二分查找的条件:
1:查找的内容得是有序的
2:查找的数量唯一
最核心的二分查找:
#include
int main()
{
int a[13]={5,16,39,45,51,98,100,202,226,321,368,444,501};
int b;
scanf("%d",&b);
int lift=0,right=12;
int mid;
while(lift<=right)
{
mid=(lift+right)/2;
if(a[mid]>b)
right=mid-1;
else if(a[mid]right)
printf("未找到");
return 0;
}
自由输入数组,前提输入的数组得是有序的:
#include
int main()
{
int a[100];
int b,i;
int n=0;
for(i=0;i<100;i++)
{
scanf("%d",&a[i]);
n++;
if(getchar()=='\n')
{
break;
}
}
scanf("%d",&b);
int lift=0,right=n;
int mid;
while(lift<=right)
{
mid=(lift+right)/2;
if(a[mid]>b)
right=mid-1;
else if(a[mid]right)
printf("未找到");
return 0;
}
加入排序,从小到大排序:
#include
int main()
{
int a[100];
int b,i,j,t;
int n=0;
for(i=0;i<100;i++)
{
scanf("%d",&a[i]);
n++;
if(getchar()=='\n')
{
break;
}
}
//从小到大排序
for(i=0;i=i;j--)
{
if(a[j]b)
right=mid-1;
else if(a[mid]right)
printf("未找到");
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)