二分查找演算法
二分查找也稱為折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須採用順序儲存結構,且表格中元素依關鍵字有序排列。
尋找過程
#首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查找關鍵字,則進一步查找前一子表,否則進一步查找後一子表。重複以上過程,直到找到符合條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。
比較次數
計算公式:
#當順序表有n個關鍵字時:
#查找失敗時,至少比較a次關鍵字;尋找成功時,最多比較關鍵字次數是b。
注意:a,b,n均為正整數。
演算法複雜度
二分查找的基本思想是將n個元素分成大致相等的兩部分,取a[n/2]與x做比較,如果x=a[n/2],則找到x,演算法中止;如果xa[n/2],則只要在陣列a的右半部搜尋x.
時間複雜度無非就是while循環的次數!
總共有n個元素,
漸漸跟下去就是n,n/2,n/4,....n/2^k(接下來運算元素的剩餘個數),其中k就是循環的次數
由於你n/2^k取整後>=1
即令n/2^k=1
可得k=log2n,(是以2為底,n的對數)
所以時間複雜度可以表示O(h)=O(log2n)
下面提供一段二分找出實作的偽代碼:
BinarySearch(max,min,des)
mid-<(max min)/2
while(min<= max)
mid=(min max)/2
if mid=des then
return mid
elseif mid >des then
max=mid-1
else
min=mid 1
#return max
折半查找法也稱為二分查找法,它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用O(log n)完成搜尋任務。它的基本想法是:(這裡假設數組元素呈升序排列)將n個元素分成個數大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/ 2]則找到x,演算法終止;如果xa[n/2],則我們只要在數組a的右半部繼續搜尋x。
以上是二分查找演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用C#編寫二分查找演算法二分查找演算法是一種高效率的查找演算法,它在有序數組中尋找特定元素的位置,時間複雜度為O(logN)。在C#中,我們可以透過以下幾個步驟來編寫二分查找演算法。步驟一:準備資料首先,我們需要準備一個已經排好序的陣列作為尋找的目標資料。假設我們要在陣列中尋找特定元素的位置。 int[]data={1,3,5,7,9,11,13

立方根是一個整數值,當它自己連續乘以自己三次時,得到原始數值。在本文中,我們將寫一個使用二分搜尋來找出一個數的立方根的Java程式。找到一個數的立方根是二分搜尋演算法的一個應用之一。在本文中,我們將詳細討論如何使用二分搜尋來計算立方根。輸入-輸出範例Example-1:Input:64Output:4如,64的立方根為4,輸出為4。 Example-2:Input:216Output:6如,216的立方根為6,輸出為6。二分查找二分搜尋是一種用來尋找元素(即排序數組中的鍵)的演算法。二進位演算法的工作

我們知道二分查找方法是一種最適合且有效的排序演算法。這個演算法適用於已排序的序列。演算法很簡單,它只是從中間找到元素,然後將列表分成兩部分,並向左子列表或右子列表移動。我們知道它的演算法。現在我們將看到如何在多執行緒環境中使用二分查找技術。線程的數量取決於系統中存在的核心數。讓我們看一下程式碼以了解思路。範例#include<iostream>#defineMAX16#defineMAX_THREAD4usingnamespacestd;//placearr,keyandothervariabl

C程式語言提供了兩種搜尋技術。它們如下所示:線性搜尋二分搜尋二分搜尋此方法只適用於有序列表。給定列表被分成兩個相等的部分。給定的關鍵字與清單的中間元素進行比較。在這裡,可能會發生三種情況,如下所示:如果中間元素與關鍵字匹配,則搜尋將在此成功結束如果中間元素大於關鍵字,則搜尋將在左側分區進行。如果中間元素小於關鍵字,則搜尋將在右側分區進行。輸入(i/p)-未排序的元素列表,關鍵字。輸出(o/p)-成功-如果找到關鍵字失敗-否則key=20mid=(low+high)/2程式1以下是使用二分查找在

如何使用Python實作二分查找演算法?二分查找演算法,也稱為折半查找演算法,是一種高效率的查找演算法。它適用於有序的數組或列表,透過將目標值與數組中間位置的元素進行比較,從而縮小查找範圍。以下將介紹如何在Python中實作二分查找演算法,並提供具體的程式碼範例。演算法想法:將目標值與陣列中間位置的元素進行比較;如果相等,則傳回元素位置;如果目標值大於中間位置的元素,則在右

如何使用Java實作二分查找演算法二分查找演算法是一種高效率的查找方法,適用於已排序的陣列。它的基本思想是不斷縮小查找範圍,將查找值與數組中間的元素進行比較,並根據比較結果決定繼續查找左半部分還是右半部分,直到找到目標元素或查找範圍縮小為空。下面我們來具體介紹如何用Java實作二分查找演算法。步驟一:實作二分查找方法publicclassBinarySearch

在這個問題中,我們得到了一個有理數的排序數組。我們必須使用二分搜尋演算法來搜尋該有理數數組的給定元素,而不使用浮點運算。有理數是以p/q形式表示的數字,其中p和q都是整數。例如,⅔、⅕。二分搜尋是一種搜尋技術,透過尋找陣列的中間來尋找元素。用於尋找使用二分法搜尋有理數排序數組中的元素,其中不允許浮點運算。我們將比較分子和分母,以找出哪個元素較大或哪個元素是要找到的元素。範例讓我們為此建立一個程序,#include<stdio.h>structRational{ &am

PHP演算法解析:如何使用二分查找演算法在有序數組中快速定位元素?概述:二分查找演算法是一種高效率的查找演算法,它適用於有序數組中查找特定元素。本文將詳細介紹二分查找演算法的原理,並給出PHP程式碼範例。原理:二分查找演算法透過重複將查找範圍縮小一半,從而快速定位目標元素。其流程如下:首先,將查找範圍縮小為陣列的開頭和結尾;然後,計算中間元素的索引,將其與目標元素進行比較;