java 二分尋找 - 折半尋找演算法

來源:互聯網
上載者:User

標籤:java 二分尋找

二分尋找:


這個演算法是比較簡單的,容易理解的。這個演算法是對有序的數組進行尋找,所以想要使用這個演算法那麼

首先先要對數組進行排序。


其實有三個指標,開始指標,末尾指標,中間指標,來開始。折半尋找。

步驟如下:

1、確定三個指標,start,end,middleIndex。

2、判斷start<=end,如果滿足,就執行這個方法,不滿足,就返回,找不到。

3、在2的前提下,我們對其折半尋找,middleIndex = start+end >> 1,取中間值。

4、判斷中間位置的值和目標值是否相等,如果相等就返回這個位置。

不相等,如果中間位置的值比目標值大,就在左半邊的數組來遞迴尋找這個目標值,

否則在右邊的數組尋找遞迴這個目標值。

5.傳回值。


package com.test4;/** * 二分尋找 *  * @author sdc * */public class BinarySearch {// 尋找某個元素需要的次數static int count;public static void main(String[] args) {}/** * 二分尋找--遞迴的形式,二分尋找是對有序的數組尋找 *  * @param sortArray * @param start * @param end * @param target * @return */public static int binarySearch(int[] sortArray, int start, int end, int target) {if (sortArray == null) {return -1;}int sortArrayLength = sortArray.length;if (sortArrayLength == 1) {return sortArray[0];}count++;// 真正開始了,尋找if (start <= end) {// 中間的位置int middleIndex = (start + end) >> 1;// 中間的值int middleData = sortArray[middleIndex];if (middleData == target) {return middleIndex;} else if (middleData < target) {return binarySearch(sortArray, middleIndex + 1, end, target);} else {return binarySearch(sortArray, start, middleIndex - 1, target);}} else { // 給的傳回值不對return -1;}}/** * 二分尋找-非遞迴的形式 *  * @param sortArray * @param target * @return */public static int serarch(int[] sortArray, int target) {if (sortArray == null) {return -1;}// 起始位置int start = 0;// 結束位置int end = sortArray.length - 1;while (start <= end) { // 一直迴圈尋找// 中間位置int middleIndex = (start + end) >> 1;if(sortArray[middleIndex] == target) {return middleIndex;}else if(sortArray[middleIndex] > target) {end = middleIndex -1;}else {start = middleIndex +1;}}return -1;}}


結束:

本文出自 “10093778” 部落格,請務必保留此出處http://10103778.blog.51cto.com/10093778/1918333

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.