二分查找找下标或者值

来源:互联网 发布:2017 java 编辑:程序博客网 时间:2024/06/05 02:37
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;     }}

0 0
原创粉丝点击