折半查找

来源:互联网 发布:阿里云 宕机 经济损失 编辑:程序博客网 时间:2024/06/11 18:35
//折半查找:
#include<stdio.h>#include<stdlib.h>int binFind(int A[],int len,int x)   //折半查找{if(A == NULL)exit(1);else{int low = 0,high = len-1;            //low用来记录低下标,high用来记录高下标int mid;                             //low值为中间下标,用来与x比较(因此成为折半查找)while(low <= high){mid = ((low + high)/2);if(A[mid]<x)                 //如果x大于中间值,则x一定在右半段{low = mid+1;         //改变低下标为中间下标的下一个mid = (low + high)/2;}else if(A[mid]>x)            //如果x小于中间值,x一定存在于左半段{high = mid-1;        //改变高下标为中间下标的前一个mid = (low + high)/2;}elsereturn mid;          //否则,x与当前中间值相等,则返回中间下标}}return -1;}int main(){int arr[] = {1,2,3,5,9,15,36,46,78,95},ph = 0,item = 0;for(int i = 0;i<sizeof(arr)/sizeof(arr[0]);i++)printf("%d ",arr[i]);printf("\n请输入要查找的值:");scanf("%d",&item);ph = binFind(arr,sizeof(arr)/sizeof(arr[0]),item);if(-1 != ph)printf("a[%d] = %d\n",ph,arr[ph]);elseprintf("没有找到%d\n",item);return 0;}



0 0