二分法算法老生常談,不做解釋
注意點(diǎn):
- 數(shù)組要首先有序
- 整數(shù)相除不是四舍五入魄梯,直接去掉多余的小數(shù)部分,所以 low = mid+1 ; high = mid-1
package com.xmq.algorithm;
import edu.princeton.cs.algs4.StdOut;
/**
* Created by xmq on 2017/10/12.
* 二分法查找算法
* 注意點(diǎn): 1. 數(shù)組要首先有序
* 2. 整數(shù)相除不是四舍五入酿秸,直接去掉多余的小數(shù)部分,所以 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}; // 此數(shù)組是有序數(shù)組
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; //整數(shù)除法 小數(shù)點(diǎn)直接刪除(存儲(chǔ)結(jié)構(gòu)決定) 3/2 =1
if (target > array[mid]) {
low = mid +1;
} else if (target < array[mid]) {
high = mid -1;
} else {
return mid;
}
}
return -1;
}
}