首頁 常見問題 一個運用二分查找演算法的程式的時間複雜度是什麼

一個運用二分查找演算法的程式的時間複雜度是什麼

Jan 26, 2021 am 11:35 AM
二分查找

一個運用二分查找演算法的程式的時間複雜度是「對數等級」。二分查找是一種效率較高的查找方法,演算法複雜度即是while迴圈的次數,時間複雜度可以表示「O(h)=O(log2n)」。

一個運用二分查找演算法的程式的時間複雜度是什麼

本教學操作環境:windows7系統、Dell G3電腦。

一個運用二分查找演算法的程式的時間複雜度是「對數層級」。

相關推薦:《程式設計學習

二分查找也稱為折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須採用順序儲存結構,且表格中元素依關鍵字有序排列。

查找過程:

首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與尋找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查找關鍵字,則進一步查找前一子表,否則進一步查找後一子表。重複以上過程,直到找到符合條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。

演算法複雜度:

二分查找的基本想法是將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中文網! !

以上是一個運用二分查找演算法的程式的時間複雜度是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何使用C#寫二分查找演算法 如何使用C#寫二分查找演算法 Sep 19, 2023 pm 12:42 PM

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

使用二分查找演算法找出一個數的立方根的Java程序 使用二分查找演算法找出一個數的立方根的Java程序 Aug 28, 2023 pm 01:33 PM

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

使用C語言編寫的二分查找程序,使用pthread進行多執行緒處理 使用C語言編寫的二分查找程序,使用pthread進行多執行緒處理 Aug 26, 2023 pm 12:45 PM

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

如何使用二分查找演算法在C語言中找到數組中的最小元素? 如何使用二分查找演算法在C語言中找到數組中的最小元素? Aug 25, 2023 pm 08:37 PM

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

如何使用Python實作二分查找演算法? 如何使用Python實作二分查找演算法? Sep 20, 2023 pm 01:24 PM

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

如何使用java實作二分查找演算法 如何使用java實作二分查找演算法 Sep 19, 2023 pm 12:57 PM

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

在C程式中,使用二分查找演算法來搜尋有理數,而不使用浮點數算術 在C程式中,使用二分查找演算法來搜尋有理數,而不使用浮點數算術 Aug 27, 2023 pm 06:05 PM

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

PHP演算法解析:如何使用二分查找演算法在有序數組中快速定位元素? PHP演算法解析:如何使用二分查找演算法在有序數組中快速定位元素? Sep 19, 2023 pm 01:14 PM

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