比如数组 a[]={2,45,12,20,5,9,1,17}用二分法找到12这个数的位子怎么用程序写?
别用冒泡法
谢谢各位了~~~

解决方案 »

  1.   

    冒泡是排序 算法啊,楼主,,你这个 直接 用 jdk api就可以实现了,二分法 其实很简单,自己 试着写下,看 清原理就会了
      

  2.   

    二分查找的前提条件必须保证你的数组是有序的,然后才能用二分查找,所以你先得将数组进行排序,下面是我写的二分查找的方法public static int bSearch(int[] array,int key){
    int low = 0;
    int high = array.length -1;
    int mid;
    while(low <= high){
    mid = (low + high)/2;
    if(array[mid] == key){
    return mid;
    }
    if(array[mid] > key){
    high = mid - 1;
    }else{
    low = mid + 1;
    }
    }
    return -1;
    }
      

  3.   

    呵呵,如果是用Java写,很简单
    Arrays.sort(a);
    Arrays.binarySearch(a);
      

  4.   

    public int ArraySerach(int[] sArray, int data, int beginIndex, int endIndex)
    {
    // 先对数组进行排序

     ...

    // 定义数组中间下标
    int middleIndex = (beginIndex + endIndex) / 2;

    // 二分法查找目标数
    if (sArray[middleIndex] > data)
    {
    return ArraySerach(sArray, data, beginIndex, middleIndex -1);
    }
    else if(sArray[middleIndex] < data)
    {
    return ArraySerach(sArray, data, middleIndex + 1, endIndex);
    }
    else
    {
    return middleIndex;
    }
    }
    这里用到递归