最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

java模擬二分法查找

2022-07-01 18:41 作者:虛云幻仙  | 我要投稿

/**
* 測試二分法查找
*/

public class TestBinarySearch {
? ?public static int binarySearch(int[] arr,int tar){
? ? ? ?/*
? ? ? ?使用二分法之前需要對數(shù)組排序 這里設定數(shù)組是由小到大排序
? ? ? ?取中間元素arr[mid]和要查找的數(shù)tar比較 如果tar更大就在中間元素的右側(cè)區(qū)域即比中間元素大的區(qū)域再次取中間元素作比較
? ? ? ?如果tar更小就在左側(cè)區(qū)域再取中間元素比較 區(qū)域每次縮小 一半+mid中間元素本身
? ? ? ?如果一直比較到區(qū)域內(nèi)只有一個元素的時候 mid中間元素就是這個元素 用 arr[mid]和tar比較還是不相同即數(shù)組中不存在tar返回-1
? ? ? ? */


? ? ? ?int low = 0;
? ? ? ?int high = arr.length-1;
? ? ? ?//第一次查詢的區(qū)域是整個數(shù)組 即第0位至length-1位
? ? ? ?int mid;
? ? ? ?//設定中間元素用于比較tar
? ? ? ?while(low<=high){
? ? ? ? ? ?mid = (high+low)/2;
? ? ? ? ? ?//mid不是區(qū)域的長度/2 mid是中間元素的下標 應該在下標low和下標high中間 high-low是長度 (high+low)/2是取平均
? ? ? ? ? ?if(arr[mid] == tar)return mid;
? ? ? ? ? ?if (arr[mid] >tar){
? ? ? ? ? ? ? ?high=mid-1;
? ? ? ? ? ?}
? ? ? ? ? ?if(arr[mid]<tar){
? ? ? ? ? ? ? ?low = mid+1;
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?return -1;
? ?}

? ?public static void main(String[] args) {
? ? ? ?int[] array1 = {5,7,8,1,3,6,4,2,9};
? ? ? ?Arrays.sort(array1);
? ? ? ?//查找之前先要排序
? ? ? ?System.out.println(Arrays.toString(array1));
? ? ? ?System.out.println(binarySearch(array1,8));
? ? ? ?//先查array1[mid=4]<8 范圍變?yōu)閘ow5 high8 mid6 [mid]<8 范圍變?yōu)閘ow7 high8 mid7 [7]=8返回
? ? ? ?System.out.println(binarySearch(array1,0));
? ? ? ?/*
? ? ? ?arr[mid=4]為5>0 arr[mid=1]為2>0 high變?yōu)?-1 while(low0<=high0) mid=(low+high)/2=0
? ? ? ?arr[0]為1>0 high變?yōu)?-1 while(low<=high)false 退出循環(huán)返回-1
? ? ? ? */

? ?}
}

java模擬二分法查找的評論 (共 條)

分享到微博請遵守國家法律
休宁县| 阿巴嘎旗| 海安县| 宁海县| 屏山县| 莆田市| 洱源县| 慈利县| 喀什市| 洪雅县| 渭南市| 郯城县| 定结县| 马尔康县| 黄平县| 丹凤县| 保山市| 福安市| 达尔| 古田县| 平乐县| 庆城县| 余江县| 金秀| 长垣县| 永安市| 大悟县| 台中县| 渑池县| 洞口县| 平武县| 屯昌县| 印江| 萝北县| 汾阳市| 修文县| 克什克腾旗| 武义县| 金坛市| 河南省| 桃园县|