C语言折半查找(二分查找) 定义:对用户输入的数是否在已经按顺序定义好的一组数上进行查找思想: 定义好的一组数必须按顺序排序,一般从小到大排序; 将一组数分为两个部分;low指第一个数,mid指中间一个数,high指第最后一个数; 把查找数n与mid比较;如果n>mid,说明在mid右侧,low的位置发生改变,除去当时low本身,则 low = mid+1;如果n<mid,说明在mid左侧,high的位置发生改变,除去当时high本身,则 high = mid-1;如此重复比较直到找到查找数n; /*查找用户输入的数n,找到了输出n和其值下标,没找到输出n*/ #include <stdio.h> void main() { int a[10] = {-11, 0, 8,16,32,64,128,130,260,320}; int low,mid,high; int n;//查找的数 int flag = 0;//标志变量 low = 0; high = 10-1; printf("输入让查找的数字"); scanf("%d",&n); while(low<=high) { mid = (low + high)/2; if(n==a[mid])//第一次就找到 { flag = 1; break; } else if(n>a[mid]) { low = mid+1;//说明在mid右侧,low的位置发生改变 } else { high = mid-1;//说明在mid左侧,high的位置发生改变 } } if(flag==1) { printf("找到了:%d 下标数为%d\n",n,mid); } else { printf("%d\n",n); } }