二分查詢和遍歷查詢效能比較

2022-08-17 00:15:12 字數 1358 閱讀 7056

一、查詢類

/**

* 查詢演算法

* *

@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;

}}

二、測試類

public

class

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小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...