注意,int陣列要先排序
package com.lhkj.dao;
/**
* 前提int陣列是公升序排列
* 可以將陣列先排序
* 推薦冒泡
* @author 李晗
* */
public class test
if(goal==data[mid])
else if(goaldata[mid])
return -1 ;
}
public static void main(string args);
int result =find(data,6,0,data.length-1) ;
system.out.println(result);
} }
執行結果 3
即在第三個位置
備註資料:
1、二分查詢(binary search)
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。
二分查詢要求:線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。
2、二分查詢的基本思想
二分查詢的基本思想是:(設r[low..high]是當前的查詢區間)
(1)首先確定該區間的中點位置:
(2)然後將待查的k值與r[mid].key比較:若相等,則查詢成功並返回此位置,否則須確定新的查詢區間,繼續二分查詢,具體方法如下:
①若r[mid].key>k,則由表的有序性可知r[mid..n].keys均大於k,因此若表中存在關鍵字等於k的結點,則該結點必定是在位置mid左邊的子表r[1..mid-1]中,故新的查詢區間是左子表r[1..mid-1]。
②類似地,若r[mid].key因此,從初始的查詢區間r[1..n]開始,每經過一次與當前查詢區間的中點位置上的結點關鍵字的比較,就可確定查詢是否成功,不成功則當前的查詢區間就縮小一半。這一過程重複直至找到關鍵字為k的結點,或者直至當前的查詢區間為空(即查詢失敗)時為止。
二分查詢演算法 java
題目 在乙個有序陣列中查詢給定值得下標 其中有兩個前提,一是順序儲存結構,二是儲存結構已經是排好序的。給定前提 int array new int int num 50 intleft 0,right array.length 1 先看看直接用迴圈的方式 int index 1 int middle...
Java演算法 二分查詢
查詢 基本查詢 陣列元素無序 從頭到尾 二分查詢 折半查詢 陣列元素有序 分析 a 定義最大索引,最小索引 b 計算出中間索引 c 拿中間索引的值和要查詢的值進行比較 相等 就直接返回當前的中間索引 不相等 大 左邊找 小 右邊找 d 重新計算中間索引 大 左邊找 max mid 1 小 右邊找 m...
java 二分查詢演算法
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。折半查詢的演算法思想是將數列按有序化 遞增或遞減 排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小 於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。折半查詢是一種高...