#include "stdio.h" #define N 10 int main(){ int a[N]={1,2,3,4,5,6,7,8,9,10},i,left,right,mid,x; puts("输入你要查找的数据:\n"); scanf("%d",&x); left=0;right=N-1;mid=(left+right)/2; while(x!=a[mid]&&right>left){ if(x<a[mid]){ right=mid; mid=(left+right)/2; } else if(x>a[mid]){ left=mid; mid=(left+right)/2; } } if(x==a[mid]){ for(i=0;i<N;i++){ printf("%d ",a[i]); } printf("\n该数为数组中第%d个",mid+1); } else printf("该数据不存在"); return 0; }
时间: 2024-03-18 11:45:36 浏览: 30
这段代码是一个二分查找算法的实现,可以用于在一个有序数组中查找指定的数值。用户需要先输入要查找的数据,然后程序会在数组中寻找该数据,如果找到,则输出该数在数组中的位置,否则输出“该数据不存在”。
具体实现方法是,先定义一个有序数组a,然后用户输入要查找的数据x。定义三个变量left、right、mid,分别表示数组的左端点、右端点和中间点。将left初始化为0,right初始化为数组长度减一,mid初始化为left和right的平均值。然后进行循环,如果x不等于a[mid]并且right大于left,则根据x与a[mid]的大小关系调整left和right的值,并重新计算mid的值。如果x等于a[mid],则输出整个数组和该数在数组中的位置;否则,输出“该数据不存在”。
阅读全文