二分法尋找——Java

來源:互聯網
上載者:User

標籤:java   演算法   資料結構   二分法尋找   

首先介紹一下什麼是二分法尋找。

顧名思義二分法即多次將待查數組的長度折半,但前提條件時待尋找數組中的資料需要是已經排序好了的資料。

主要思想:

對於待尋找數組arr[low,high],其中high=arr.length-1,待尋找元素des

(1)確定數組中間位置mid=(low+high)/2

(2)將尋找值des與arr[mid]進行比較,若相等,則直接返回該位置;否則確定新的尋找位置,繼續二分尋找。地區確定如下:如果arr[mid]>des由數組的有序性可知

arr[mid,mid+1.........,high]>des;故新的區間為arr[low,.........,mid-1];如果arr[mid]<des,同理由數組的有序性可知arr[low,.........mid-1]<des,則新的區間為arr[mid+1,......,high]。每一次尋找都與中間值比較,就可以確定是否尋找成功,不成功當前尋找區間縮小一半


具體代碼如下:

package Algorithm;public class binarySearch{public static void main(String[] args){int[] src=new int[]{1,3,5,7,9};System.out.println(binarySearch1(src,7));System.out.println(binarySearch1(src,3,0,src.length-1));}/** * *二分尋找演算法* * @param srcArray * 有序數組 * @param des * 尋找元素 * @return des的數組下標,沒找到返回-1 */public static int binarySearch1(int[] srcArray,int des){int low=0;int high=srcArray.length-1;while (low<=high){int mid=(low+high)/2;if (des==srcArray[mid]){return mid;}else if(des<srcArray[mid]){high=mid-1;}else{low=mid+1;}}return -1;}/** * 二分尋找(遞迴)被尋找數在數組中的位置 * @param dataset * @param data * @param beginIndex * @param endIndex * @return index 被尋找數下標位置 */public static int binarySearch1(int[]dataset,int data,int beginIndex,int endIndex){int mid=(beginIndex+endIndex)/2;if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){return -1;}if (data<dataset[mid]){return binarySearch1(dataset,data,beginIndex,mid-1);}else if(data>dataset[mid]){return binarySearch1(dataset,data,mid+1,endIndex);}else{return mid;}}}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

二分法尋找——Java

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.