題目:
在乙個有序陣列中查詢給定值得下標其中有兩個前提,一是順序儲存結構,二是儲存結構已經是排好序的。
給定前提:
int array = new
int;
int num = 50;
intleft = 0, right = array.length - 1;
先看看直接用迴圈的方式:
int
index = -1;
int middle;
while (left <= right) else
if (num < array[middle]) else
}// index就是下標,如果為-1表示未找到
system.out.println(index);
再看看遞迴的方式:
private static int indexof(int array, int num, int
left, int
right)
int middle = (left + right) / 2;
if (array[middle] == num) else
if (num < array[middle]) else
return indexof(array, num, left, right);
}
參考: Java演算法 二分查詢
查詢 基本查詢 陣列元素無序 從頭到尾 二分查詢 折半查詢 陣列元素有序 分析 a 定義最大索引,最小索引 b 計算出中間索引 c 拿中間索引的值和要查詢的值進行比較 相等 就直接返回當前的中間索引 不相等 大 左邊找 小 右邊找 d 重新計算中間索引 大 左邊找 max mid 1 小 右邊找 m...
java 二分查詢演算法
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。折半查詢的演算法思想是將數列按有序化 遞增或遞減 排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小 於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。折半查詢是一種高...
java 二分查詢演算法
程式設計之美在於演算法之美,先來看看二分查詢的演算法 隱藏條件 二分查詢必須是有序的,從小到大,或從大到小的排序才能進行二分查詢,下面來看看 package com.cn.daming public class mainactivity 排序是從小到大 int aints2 new int 排序是從...