算法學習(二):二分法算法

二分法算法老生常談,不做解釋

注意點:

  1. 數組要首先有序
  2. 整數相除不是四舍五入,直接去掉多余的小數部分,所以 low = mid+1 ; high = mid-1
package com.xmq.algorithm;
import edu.princeton.cs.algs4.StdOut;

/**
 * Created by xmq on 2017/10/12.
 * 二分法查找算法
 * 注意點: 1. 數組要首先有序
 *         2. 整數相除不是四舍五入,直接去掉多余的小數部分,所以  low = mid+1   ; high =  mid-1
 */

public class BinarySearch {
    public static void main(String[] args) {
        int[] numbers = {3, 5, 6, 7, 8, 10, 11, 13, 14, 15};     // 此數組是有序數組
        StdOut.print(rank(3,numbers));
    }

    public static int rank(int target, int[] array){
        int low = 0;
        int high = array.length -1;

        for (int i = 0; i < array.length; i++) {
            int mid = low + ( high -low )/2; //整數除法 小數點直接刪除(存儲結構決定)   3/2 =1
            if (target > array[mid]) {
                low = mid +1;
            } else if (target < array[mid]) {
                high = mid -1;
            } else {
                return mid;
            }
        }
        return -1;
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容