数据结构与算法之二分查找法
public static void main(String[] args) {
?? ??? ?//目標數組
?? ??? ?int[] arr = new int[] {1,2,3,4,5,6,7,8,9};
?? ??? ?//目標元素
?? ??? ?int target=9;
?? ??? ?//目標元素的索引
?? ??? ?int index = -1;
?? ??? ?//記錄開始位置
?? ??? ?int begin=0;
?? ??? ?//記錄結束位置
?? ??? ?int end = arr.length;
?? ??? ?//記錄中間位置
?? ??? ?int mid = (begin+end)/2;
?? ??? ?//循環查找
?? ??? ?while(true) {
//如果起始位置和結束位置重合,說明目標元素在目標數組中不存在
?? ??? ??? ?if(begin>=end) {
?? ??? ??? ??? ?throw new RuntimeCryptoException();
?? ??? ??? ?}
?? ??? ??? ?//判斷中間這個元素是不是要查找的元素
?? ??? ??? ?if(arr[mid]==target) {
?? ??? ??? ??? ?index=mid;
?? ??? ??? ??? ?//如果是,直接退出
?? ??? ??? ??? ?break;
?? ??? ??? ?}else {
?? ??? ??? ??? ?//判斷中間元素比目標元素大
?? ??? ??? ??? ?if(arr[mid]>target) {
?? ??? ??? ??? ??? ?//把結束位置調整到中間位置的前一個位置
?? ??? ??? ??? ??? ?end=mid-1;
?? ??? ??? ??? ?//判斷中間元素比目標元素小
?? ??? ??? ??? ?}else {
?? ??? ??? ??? ??? ?//把起始位置調整到中間位置的后一個位置
?? ??? ??? ??? ??? ?begin=mid+1;
?? ??? ??? ??? ?}
//取出新的中間位置
?? ??? ??? ??? ?mid=(begin+end)/2;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?System.out.println(index);
?? ?}
總結
以上是生活随笔為你收集整理的数据结构与算法之二分查找法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法之数组
- 下一篇: 从键盘获取字符串,并把字符串转数字