读书人

编程之好-3.11

发布时间: 2012-12-28 10:29:04 作者: rapoo

编程之美-3.11

1.给定一个有序(不降序)数组a,求任意一个i使得a[i]等于v,不存在返回-1

int bisearch(int[] a, int v){  int low = 0,high = a.length-1,t;  while(low<=high){       t = low+(high-low)/2;       if(a[t]==v) return t;       else if(a[t]>v){           low = t+1;       }else{           high = t-1;       }     }   return -1;}

2.?给定一个有序(不降序)数组a,求最小的i使得a[i]等于v,不存在返回-1

int bisearch(int[] a, int v){  ???int low = 0,high = a.length-1,t;???? while(low<high){????????? t = low+(high-low)/2;????????? if(a[t]<v){????????????? low = t+1;?? ????????? }else{?????????????????????????????? //相等时仍要往下标为0处走????????? high = t;??????? ????????? }??????? }? ??????????? if(a[high]==v)? return (high);??????????? else return -1;? }

??3.给定一个有序(不降序)数组a,求最大的i使得a[i]等于v,不存在返回-1

int bisearch(int[] a, int v){    int low = 0,high = a.length-1,t;    while(low<high-1){           t = low+(high-low)/2;                 if(a[t]>v){ high = t-1;                    }else{                                low = t;               }      }            if(a[low+1]==v)  System.out.println(low+1);          else if(a[low]==v) System.out.println(low);          else System.out.println(-1);   }

?

读书人网 >编程

热点推荐