国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java實現二分查找算法實例分析

2019-11-26 15:02:57
字體:
來源:轉載
供稿:網友

本文實例講述了Java實現二分查找算法。分享給大家供大家參考。具體如下:

1. 前提:二分查找的前提是需要查找的數組必須是已排序的,我們這里的實現默認為升序

2. 原理:將數組分為三部分,依次是中值(所謂的中值就是數組中間位置的那個值)前,中值,中值后;將要查找的值和數組的中值進行比較,若小于中值則在中值前面找,若大于中值則在中值后面找,等于中值時直接返回。然后依次是一個遞歸過程,將前半部分或者后半部分繼續分解為三部分。可能描述得不是很清楚,若是不理解可以去網上找。從描述上就可以看出這個算法適合用遞歸來實現,可以用遞歸的都可以用循環來實現。所以我們的實現分為遞歸和循環兩種,可以根據代碼來理解算法

實現代碼:

public class BinarySearch { public static void main(String[] args){ int searchArr[] = new int[1000000]; for(int i=0;i<1000000;i++){  searchArr[i]=i; }   System.out.println(binSearch(searchArr,0,searchArr.length-1,99));    System.out.println(binSearch(searchArr,99));  }//遞歸二分查找  public static int binSearch(int arr[], int start,int end,int sear){    int mid = (end-start)/2 + start;    if(sear==arr[mid]){      return mid;    }    if(start>=end){      return -1;    }else if(sear < arr[mid]){      return binSearch(arr,0,mid-1,sear);    }else if(sear >arr[mid]){      return binSearch(arr,mid+1,end,sear);    }    return -1;  }//循環二分查找  public static int binSearch(int arr[],int key){    int mid = arr.length/2;    int start = 0;    int end = arr.length-1;    while(start<=end){      mid = (end-start)/2+start;      if(key ==arr[mid]){        return mid;      }else if(key <= arr[mid]){        end = mid-1;      }else if(key >=arr[mid]){        start = mid+1;      }    }    return -1;  }

效率比較:

循環二分查找算法的效率高于遞歸二分查找算法

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝丰县| 达日县| 安陆市| 西峡县| 怀来县| 灵丘县| 清水河县| 吐鲁番市| 和林格尔县| 阿尔山市| 河东区| 栖霞市| 信宜市| 思南县| 和田县| 丁青县| 会同县| 辰溪县| 西城区| 天柱县| 蚌埠市| 松原市| 托克逊县| 和林格尔县| 渝北区| 射阳县| 贺州市| 张家川| 定远县| 萍乡市| 内黄县| 庐江县| 榆社县| 融水| 东乌| 贵港市| 都安| 陇西县| 青田县| 宜春市| 邳州市|