一、查詢類
/*** 查詢演算法
* *
@since
2016.09.06 *
*/public
class
binarysearch
int middleindex = (startindex + endindex) / 2;
if(middleindex > array.length - 1)
if(need ==array[middleindex])
if(need >array[middleindex])
else
return
getindexfromarray(array, startindex, endindex, need);
}/*** 遍歷查詢,返回該數字在陣列中的索引
* *
@param
array 陣列
* @param
need 需要查詢索引的數字
* @return
need數字在陣列中的位置(即索引)
*/public
static
int getindexfromlistarray(int array,int
need)
for(int j = 0;j < array.length;j++)
}return -1;
}}
二、測試類
publicclass
test
int need = 8999999;
long s =system.currenttimemillis();
int index = binarysearch.getindexfromarray(array, 0, array.length, need);
system.out.println("二分查詢耗時:" + (system.currenttimemillis() -s));
s =system.currenttimemillis();
int indexrepeat =binarysearch.getindexfromlistarray(array, need);
system.out.println("遍歷查詢耗時:" + (system.currenttimemillis() -s));
system.out.println(index + " || " +indexrepeat);
}}執行結果:
二分查詢耗時:0
遍歷查詢耗時:5
8999998 || 8999998
子查詢效能比較
1.單行子查詢 只返回一行.使用單行比較操作符 salary上增加索引會帶來效能提公升.2.多行子查詢 返回多於一行.使用多行比較操作符 已寫入 file afiedt.buf 1 select employee id,last name 2 from employees 3 where salar...
二分查詢和遞迴的二分查詢
在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...