Python程式在數組中搜尋元素
在Python中,主要使用兩種搜尋演算法。其中,第一個是線性搜索,第二個是二分搜索。
這兩種技術主要用於從給定數組或給定列表中搜尋元素。在搜尋元素時,任何類型的演算法都可以遵循兩種方法。其中一種是遞歸方法,另一種是迭代方法。讓我們討論兩種方法中的兩種演算法並解決類似的問題。
線性搜尋
線性搜尋技術也稱為順序搜尋。 「順序搜尋」這個名稱的含義絕對是由該搜尋演算法遵循的過程來證明的。它是一種方法或技術,用於在 Python 中查找數組或列表中的元素。
它被認為是所有其他搜尋演算法中最簡單和最容易的。,這個演算法的唯一缺點是效率不高。這就是為什麼不經常使用線性搜尋的主要原因。
演算法
Step 1 - 它僅透過將所需元素與給定數組中存在的每個元素進行比較來按順序搜尋元素。
-
##步驟2 - 如果找到所需的元素,將基礎元素的索引或位置顯示給使用者。
- ##Step 3
- 如果陣列中不存在該元素,則會通知使用者未找到該元素。這樣,演算法就處理完了。
一般來說,線性搜尋演算法對於小於或等於100的小型陣列或小型列表來說比較合適且高效,因為它會檢查並比較每個元素。
- 如果所需的要素定位到倉庫的最後位置,會耗費更多的時間。
- # ###例### 在下面的範例中,我們將學習使用線性搜尋在記憶體中尋找元素的過程。
上述程式的輸出如下:
雷雷範例(遞迴)
在下面的範例中,我們將學習使用增量方法在陣列中進行線性搜尋的過程。
雷雷 ###輸出###上述程式的輸出如下:
雷雷二分查找
二分查找演算法與線性查找演算法相當不同。它遵循完全不同的過程來搜尋陣列中的元素。它通常只考慮陣列陣列。
如果陣列在某些情況下沒有排序,則對搜尋陣列進行排序,然後開始二分演算法的過程。一旦陣列被二分搜尋考慮演算法,它首先被排序,然後演算法被陣列分配。
演算法
##步驟1
- 對叢集進行排序是第一步。 ##Step 2- - 陣列排序後,陣列被視為兩半。一半是從排序數組的第一個元素到中間元素,後半部是從排序數組的中間元素之後的元素到最後一個元素。
-
##Step 3
- 將鍵元素(要搜尋的元素稱為鍵元素)與排序數組的中間元素進行比較。 -
Step 4
- 如果鍵元素小於或等於排序數組的中間元素,則後半部元素將進一步忽略,因為鍵元素小於中間元素。因此,該元素肯定必須出現在第一個元素和中間元素之間。 -
##Step 6 - 如果鍵元素大於中間元素,則忽略已排序數組的前半部分,並考慮從中間元素到最後一個元素的元素。
##Step 7 - 在這些元素中,再次將關鍵元素與減半數組的中間元素進行比較,並重複相同的過程。如果關鍵元素大於減半數組的中間元素,則忽略前半部。
第8步 - 如果关键元素小于或等于被分割数组的中间元素,则被分割数组的后半部分将被忽略。通过这种方式,元素将在数组的任意一半中进行搜索。
因此,与线性搜索相比,复杂度减少了一半或更多,因为有一半的元素将在第一步中被移除或不被考虑。二分搜索的最佳情况时间复杂度为“O(1)”。二分搜索的最坏情况时间复杂度为“O(logn)”。这就是二分搜索算法的工作原理。让我们考虑一个例子,并应用二分搜索算法来找出数组中的关键元素。
Example
In this example, we are going to learn about the process of searching an element in an array using Binary search in recursive approach.
def recursive_binary(arr, first, last, key_element): if first <= last: mid = (first + last) // 2 if arr[mid] == key_element: return mid elif arr[mid] > key_element: return recursive_binary(arr, first, mid - 1, key_element) elif arr[mid] < key_element: return recursive_binary(arr, mid + 1, last, key_element) else: return -1 arr = [20, 40, 60, 80, 100] key = 80 max_size = len(arr) result = recursive_binary(arr, 0, max_size - 1, key) if result != -1: print("The element", key, "is present at index", (result), "in the position", (result + 1)) else: print("The element is not present in the array")
Output
上述程序的输出如下:
The element 80 is found at the index 3 and in the position 4
Example
In this example, we are going to learn about the process of searching an element in an array using Binary search in iterative approach.
def iterative_binary(arr, last, key_element): first = 0 mid = 0 while first <= last: mid = (first + last) // 2 if arr[mid] < key_element: first = mid + 1 elif arr[mid] > key_element: last = mid - 1 else: return mid return -1 arr = [20, 40, 60, 80, 100] key = 80 max_size = len(arr) result = iterative_binary(arr, max_size - 1, key) if result != -1: print("The element", key, "is present at index", (result), "in the position", (result + 1)) else: print("The element is not present in the array")
Output
上述程序的输出如下:
The element 80 is found at the index 3 and in the position 4
这是二分搜索算法的工作原理。根据时间复杂度的概念,我们可以肯定二分搜索算法比线性搜索算法更高效,时间复杂度在其中起着重要的作用。通过使用这种类型的算法,可以搜索数组中的元素。尽管用于解决问题的过程不同,但结果不会波动。这是使用多种算法检查输出一致性的一个优点。
以上是Python程式在數組中搜尋元素的詳細內容。更多資訊請關注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)

使用 Notepad++ 執行 Python 程式需要以下步驟:1. 安裝 Python 外掛程式;2. 建立 Python 檔案;3. 設定運行選項;4. 執行程式。

PyCharm是一款非常受歡迎的Python整合開發環境(IDE),它提供了豐富的功能和工具,使得Python開發變得更有效率和便利。本文將為大家介紹PyCharm的基本操作方法,並提供具體的程式碼範例,幫助讀者快速入門並熟練操作工具。 1.下載安裝PyCharm首先,我們需要前往PyCharm官網(https://www.jetbrains.com/pyc

PyCharm是一款功能強大的Python整合開發環境,提供了豐富的功能和工具來幫助開發者提高效率。其中,PyInstaller是一個常用的工具,可以將Python程式碼打包為執行檔(EXE格式),方便在沒有Python環境的機器上運作。在本篇文章中,我們將介紹如何在PyCharm中使用PyInstaller將Python程式碼打包為EXE格式,並提供具體的

Llama3來了!就在剛剛,Meta官網上新,官方宣布了Llama380億和700億參數版本。並且推出即為開源SOTA:Meta官方數據顯示,Llama38B和70B版本在各自參數規模上超越一眾對手。 8B模型在MMLU、GPQA、HumanEval等多項基準上都勝過Gemma7B和Mistral7BInstruct。而70B模型則超越了閉源的當紅炸子雞Claude3Sonnet,和谷歌的GeminiPro1.5打得有來有回。 Huggingface連結一出,開源社群再次沸騰。眼尖的盲生還第一時間發現

PyCharm社群版支援的插件足夠嗎?需要具體程式碼範例隨著Python語言在軟體開發領域的應用越來越廣泛,PyCharm作為一款專業的Python整合開發環境(IDE),備受開發者青睞。 PyCharm分為專業版和社群版兩個版本,其中社群版是免費提供的,但其外掛程式支援相對專業版有所限制。那麼問題來了,PyCharm社群版支援的插件夠嗎?本文將透過具體的程式碼範例

Python 程式開發流程包括以下步驟:需求分析:明確業務需求和專案目標。設計:確定架構和資料結構,繪製流程圖或使用設計模式。編寫程式碼:使用 Python 編程,遵循編碼規範和文件註解。測試:編寫單元和整合測試,進行手動測試。審查和重構:審查程式碼,發現缺陷和改進可讀性。部署:將程式碼部署到目標環境。維護:修復錯誤、改進功能,並監控更新。

什麼是GIL? GIL是全域解釋器鎖定的縮寫,它是python解釋器的一個重要概念。 GIL確保了Python解釋器一次只能執行一個執行緒。這意味著在任何時候,只有一個執行緒可以運行Python字節碼。其他執行緒必須等待GIL可用才能繼續執行。 GIL是如何運作的? GIL是一個由C語言編寫的鎖,它位於Python解釋器中。當一個執行緒想要執行Python字節碼時,它必須先取得GIL。如果GIL已經被另一個執行緒持有,那麼該執行緒必須等待GIL可用才能繼續執行。 GIL對Python程式有什麼影響? GIL對Pytho

Flask安裝設定教學:輕鬆建置PythonWeb應用的利器,需要具體程式碼範例引言:隨著Python的日益流行,Web開發也成為了Python程式設計師的必備技能之一。而要進行Python的Web開發,我們需要選擇適合的Web框架。在眾多的PythonWeb框架中,Flask是一款簡潔、易上手且靈活的框架,備受開發者的青睞。本文將介紹Flask框架的安裝、
