您的位置:首页 > 其它

二分查找找下标或者值

2015-10-20 22:04 218 查看
public class Util {
//求最大值
public static int maxValue(int a,int b){
int max=0;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}
//求最小值
public static int minValue(int a,int b){
int min=0;
if(a>b){
min=b;
}else{
min=a;
}
return min;
}
//选择排序
public static int[] selectSort(int[] a){
//这个地方的min的意思是默认每次排序的那个min为下坐标 而不是都是0 所以应该放在for循环里面
//     int min=0;
int n=a.length;
for(int i=0;i<n-1;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(a[min]>=a[j]){min=j;}
}
if(i!=min){
int temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
return a;
}
//二分查找找出下标
public  static int middleSort(int value,int[] a){
//     boolean boo=false;
int mid=a.length/2;
int min=0;
int i=1;
int max=a.length-1;
while(i<a.length){
i++;
if(value>a[mid]){
min=mid;
mid=(min+max)/2;
System.out.println("one"+i);
//     mid=(mid+max)/2;
}
else if(value<a[mid]){
max=mid;
mid=(max+min)/2;
System.out.println("two"+i);
//     mid=(mid+min)/2;
}else if(value==a[mid]){
//     boo=true;
break;
}
}
System.out.println("i"+i);
return mid;
}
//二分查找排好序列里面是否有那个值
public static  boolean isValueByMiddle(int value,int []a){
boolean boo=false;
int min=0;
int max=a.length-1;
int i=1;
//     int mid=a.length/2;
while(max-min>1){
i++;
int mid=(min+max)/2;
//     System.out.println("mid"+mid);
if(value>a[mid]){
min=mid+1;
//     mid=(min+max)/2;
//     System.out.println("one"+i);
}
else if(value<a[mid]){
max=mid;
//     mid=(min+max)/2;
//     System.out.println("two"+i);
}
else if(value==a[mid]){
//     System.out.println("in true");
boo=true;
break;
}
}
System.out.println("i"+i);
return boo;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: