程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 在數組中使用二分法查找,數組二分法查找

在數組中使用二分法查找,數組二分法查找

編輯:JAVA綜合教程

在數組中使用二分法查找,數組二分法查找


package com.db2;

import java.util.Arrays;

/**
 * 二分法查找
 * 
 * @author denny 使用二分法查找的前提數組已經排過序
 *
 */
public class Demo4 {

    public static void main(String[] args) {
        int[] arr = { 3, 1, 8, 2, 9, 100, 33, 22, 11, 18, 14, 17, 15, 3 };
        // 使用Arrays.sort()排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        // 返回結果
        //int index = brinarySearch(arr, 99);
        int index = brinarySearch_2(arr, 11);
        System.out.println("index=" + index);

    }

    /*
     * 二分法查找一返回下標如果是-1就說明沒有
     */
    public static int brinarySearch(int[] arr, int key) {// 數組和要查找的數
        int min = 0; // 最小的下標
        int max = arr.length - 1;// 最大的下標
        int mid = (min + max) / 2;// 中間的下標
        while (arr[mid] != key) {
            if (key > arr[mid]) { //比中間數還在
                min = mid + 1;   //最小的下標=中間下標加一
            } else if (key < arr[mid]) {//比中間數還小
                max = mid - 1;   //最大的下標=中間下標-1
            } 
            if(max<min){
                return -1;
            }
            mid=(min+max)/2; //再次計算中間下標
        }
        
        return mid;
    }
    /*
     * 二分法查找一返回下標如果是-1就說明沒有
     */
    public static int brinarySearch_2(int[] arr, int key) {// 數組和要查找的數
        int min = 0; // 最小的下標
        int max = arr.length - 1;// 最大的下標
        int mid = (min + max) / 2;// 中間的下標
    
        while(min<=max){
            if(key>arr[mid]){
                min=mid+1;
            }else if(key<arr[mid]){
                max=mid-1;
            }else{
                return mid;
            }
            mid=(min+max)/2;
        }
        //沒找到
        return -1;
    
    }
    
}

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved