二分查詢演算法及其變種

2021-09-10 13:10:31 字數 1359 閱讀 6496

前言

二分查詢演算法也稱為折半查詢演算法,是一種在查詢演算法中普遍使用的演算法。其演算法的基本思想是:在有序表中,取中間的記錄作為比較關鍵字,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定的值小於中間記錄的關鍵字,則在中間記錄的左半區間繼續查詢;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區間繼續查詢;不斷重複這個過程,直到查詢成功。否則查詢失敗。這個思想與孔子中的中庸思想和相似。

二分查詢演算法的實現

基於上述的思想,可以很快寫出如下**:

public

int binarysearch(int a,int key)         return -1;    }

實際上,二分查詢的過程可以繪製成一棵二叉樹,每次二分查詢的過程就相當於把原來的樹劃分為兩棵子樹,所以每次二分之後下次就只需要查詢其中一半的資料就可以了。那麼二分查詢演算法的時間複雜度是多少呢?在最好的情況下,只需要查詢一次就可以了,因為這時候中間記錄的關鍵字與要查詢的key是相等,自然一次就夠了。在最壞的情況下是從根節點查詢到最下面的葉子結點,這個過程需要的時間複雜度是o(

logn

) o(logn)

,但是從效能看,仍然是優於二分查詢演算法的。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

前言

二分查詢演算法也稱為折半查詢演算法,是一種在查詢演算法中普遍使用的演算法。其演算法的基本思想是:在有序表中,取中間的記錄作為比較關鍵字,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定的值小於中間記錄的關鍵字,則在中間記錄的左半區間繼續查詢;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區間繼續查詢;不斷重複這個過程,直到查詢成功。否則查詢失敗。這個思想與孔子中的中庸思想和相似。

二分查詢演算法的實現

基於上述的思想,可以很快寫出如下**:

public

int binarysearch(int a,int key)         return -1;    }

實際上,二分查詢的過程可以繪製成一棵二叉樹,每次二分查詢的過程就相當於把原來的樹劃分為兩棵子樹,所以每次二分之後下次就只需要查詢其中一半的資料就可以了。那麼二分查詢演算法的時間複雜度是多少呢?在最好的情況下,只需要查詢一次就可以了,因為這時候中間記錄的關鍵字與要查詢的key是相等,自然一次就夠了。在最壞的情況下是從根節點查詢到最下面的葉子結點,這個過程需要的時間複雜度是o(

logn

) o(logn)

,但是從效能看,仍然是優於二分查詢演算法的。

二分查詢演算法及其變種

前言 二分查詢演算法也稱為折半查詢演算法,是一種在查詢演算法中普遍使用的演算法。其演算法的基本思想是 在有序表中,取中間的記錄作為比較關鍵字,若給定值與中間記錄的關鍵字相等,則查詢成功 若給定的值小於中間記錄的關鍵字,則在中間記錄的左半區間繼續查詢 若給定值大於中間記錄的關鍵字,則在中間記錄的右半區...

演算法 二分查詢及其變種

二分查詢的前提條件是序列是有序的!時間複雜度log n 需要注意的幾個地方 public intfindtarget int nums else return 1 沒找到 返回 1 需要注意的地方 public intfindtargetleft int nums else return l 同樣如...

二分查詢及其變種

返回帶查詢元素key的下標。若沒有key元素,則返回 1。注意 1 while迴圈的條件是low high 2 每次迭代hi mid 1 或lo mid 1 二分查詢,找到該值在陣列中的下標,否則為 1 static int binaryserach int array,int key else i...