線性搜索算法簡介:簡介和特點[附例子]

已發表: 2021-06-22

目錄

什麼是搜索?

搜索是在元素列表中查找給定元素的過程。 它有助於搜索特定記錄。 因此,它是一種識別給定項目位置的技術。 搜索過程的成功取決於要搜索的項目是否已被識別。

數據結構允許通過兩種方法搜索數據。

  1. 線性搜索或順序搜索
  2. 二進制搜索

線性搜索

線性搜索算法是一種用於數據順序搜索的算法。 該算法找到具有 O(n) 複雜度的給定元素。 它應用於項目集合。 數據的每一項都按順序搜索,如果與搜索到的元素匹配則返回。 如果未找到匹配項,則繼續搜索,直到收集的數據結束。 它基本上是一種在遍歷列表時探索每個元素的技術。 搜索算法可以應用於已排序和未排序的數據。 實際上線性搜索很少使用,因為其他搜索算法(如二進制搜索算法和哈希表)提供了更快的搜索選項。

線性搜索算法的步驟

  • 用戶對搜索元素的閱讀。
  • 要搜索的元素與列表的第一個元素一起壓縮。
  • 如果元素匹配,則生成返回。
  • 如果元素不匹配,則將要搜索的元素與列表的第二個元素進行比較。
  • 重複該過程,直到元素匹配為止。

線性搜索算法的特點

  1. 它通常應用於一小部分未排序或無序的數據。
  2. 時間線性依賴於元素的數量,因此如果 O(n) 則具有時間複雜度。
  3. 實現非常簡單。

線性搜索算法

一個連續的循環方法繼續進行,除非並且直到找到該項目

  • 算法 Seqnl_Search(list, item)
  • 前:列表!=;
  • Post:如果找到則返回該項目的索引,否則:1
  • 索引 <- fi
  • while index < list.Cnt and list[index] != item //cnt: 計數器變量
  • 索引 <- 索引 + 1
  • 結束時
  • 如果 index < list.Cnt 並且 list[index] = item
  • 回報指數
  • 萬一
  • 回報:1
  • 結束 Seqnl_Search

線性搜索示例

問題:給定一個包含 n 個元素的數組 arr[],編寫一個函數來搜索 arr[] 中的給定元素 x。

圖 1:顯示線性搜索算法實現的代碼示例

資源

線性搜索算法可用於多種編程語言。

  1. Python中的線性搜索

圖 2:以 Python 語言顯示線性搜索算法的代碼示例

資源

輸出:元素存在於索引 3

  1. C中的線性搜索

圖 3:顯示 C 語言線性搜索算法的代碼示例

資源

輸出:元素存在於索引 3

  1. 數據結構中的線性搜索

數據結構中線性搜索問題的偽代碼是

圖 4:線性搜索算法的偽代碼

資源

二進制搜索

二進制搜索是一種在元素數組中搜索元素的算法。 與線性搜索算法相比,二分搜索算法適用於數據的排序列表。

二分查找算法包括以下步驟

  • 將要搜索的元素與列表或數組中間的元素進行比較。
  • 如果元素與列表中的元素匹配,則返回中間元素的索引。
  • 如果沒有返回匹配,則檢查該元素是否大於或小於中間的元素。
  • 對於值大於中間元素的元素,在數組的右側進行搜索。
  • 類似地,如果元素的值小於中間元素的值,則搜索將繼續到列表的左側。

因此,當數據以排序方式包含大量棒元素時,最好應用二進制搜索。 這使得搜索算法必須對列表/數組進行排序。

二分查找的特點

  • 二進制搜索算法對於搜索數組中的大量元素很有用。
  • 二分查找算法的時間複雜度為 O(logn)。
  • 二分搜索算法的實現很簡單。

二分搜索算法

  • 算法 Binary_Search(list, item)
  • 將 L 設置為 0,將 R 設置為 n:1
  • 如果 L > R,則 Binary_Search 因不成功而終止
  • 別的
  • 將 m(中間元素中的位置)設置為 (L + R) / 2 的底
  • 如果 Am < T,將 L 設置為 m + 1 並轉到步驟 3
  • 如果 Am > T,將 R 設置為 m: 1 並轉到步驟 3
  • 現在,Am = T,
  • 搜索完成; 返回(米)

結論

在本文中,我們研究了什麼是線性搜索算法,並詳細研究瞭如何使用線性搜索算法從列表中搜索某個元素。 最後,我們還看到瞭如何使用 Python 3 作為語言實際實現線性搜索算法並獲得我們想要的輸出。

如果您對數據科學感興趣,您必須查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃專為在職專業人士精心打造,並提供大量案例研究、實踐研討會、一對一指導,以及多得多。

線性搜索與二分搜索有何不同?

下面說明線性搜索和二分搜索之間的主要區別:
線性搜索 -
1. 元素不需要按任何特定順序進行線性搜索。
2. 在線性搜索中,元素是按順序訪問的。
3. O(n),其中 n 是數組元素的數量。
4、當數據集相對較小時,優先選擇線性搜索。
二進制搜索 -
1. 元素必須為二分查找排序。
2. 元素在二分查找中被隨機訪問。
3. O(log n),其中 n 是數組元素的數量。
4. 對於較大的數據集,二分搜索通常更可取。

線性搜索的應用有哪些?

以下是線性搜索的一些重要應用:
線性搜索對於在元素數量較少的數據集中進行搜索是有效的。 如果只需要在無序數據中執行一次搜索,那麼線性搜索比其他搜索算法更可取。
當執行線性搜索時,在鍊錶中搜索節點變得有效。 此外,二分查找和線性查找在鍊錶中具有相同的時間複雜度。 在鍊錶中執行搜索操作時,二分搜索甚至會變得複雜。
如果數據集中的元素被反復修改,那麼在這種情況下線性搜索是首選。

舉出現實生活中可以看到線性搜索的例子?

線性搜索算法類似於現實生活中的搜索。 有幾個例子可以證明這一點:
在一堆 100 本書中尋找一本書。 您將線性掃描每本書的名稱,直到找到正確的書名
在停車場找到你的出租車。 當您預訂出租車時,您會獲得出租車的車牌號。 要找到您的出租車,顯而易見的方法是將每輛車的車牌與您的號碼相匹配。
在商店貨架上找到您最喜歡的餅乾。 從商店中的大量 cookie 中,您將逐行搜索。