道士在苏眉手上写了:二分法查找

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 08:13:58
算法描述:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。 算法如下:  1.确定查找范围front=0,end=N-1,计算中项mid(front+end)/2。  2.若a[mid]=x或front>=end,则结束查找;否则,向下继续。  3.若a[mid]x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给end,并重新计算mid,转去执行步骤2。 C++代码: #include  #define N 10  using namespace std;  int main()  {  int a[N],front,end,mid,x,i;  cout<<"请输入已排好序的a数组元素:"<>a[i];  cout<<"请输入待查找的数x:"<>x;  front=0;  end=N-1;  mid=(front+end)/2;  while(frontx)end=mid-1;  mid=(front+end)/2;  }  if(a[mid]!=x)  cout<<"没找到!"<数组为例,aim为需要查找的数  int start = 0;  int end = data.length-1;  int mid = (start+end)/2;//a  while(data[mid]!=aim&&end>start){//如果data[mid]等于aim则死循环,所以排除  if(data[mid]>aim){  end = mid-1;  }else if(data[mid]