首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

编程之好-3.11

2012-12-28 
编程之美-3.111.给定一个有序(不降序)数组a,求任意一个i使得a[i]等于v,不存在返回-1int bisearch(int[] a,

编程之美-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);   }

?

热点排行