有一些簡單的演算法引入了邏輯和資料結構的基本概念,而其他演算法則旨在提高複雜性。
搜尋演算法對於在大量資料中尋找資訊非常有用,例如在電話簿或電腦上的檔案中尋找聯絡人。
從這個意義上說,本文旨在介紹涉及線性搜尋和二分搜尋演算法的概念。
1。線性搜尋
線性搜尋演算法,在敘述性陳述中,意味著有一個整數數組和一個將作為搜尋參考的值,稱為目標,它將作為輸入參數。從這個意義上說,有一個函數接收這些值,首先它遍歷該數組的每個位置,直到現有位置的最大大小,主要使用for 來實現,然後使用if,它條件是檢查:每個位置的值是否等於目標。如果找到該值,函數將傳回該位置的索引,或傳回 -1,表示未找到情況。
使用 JavaScript 的範例是:
function linearSearch(array, target) { for (let i = 0; i < array.length; i++) { if (array[i] === target) { return i; } } return -1; }因此,這個演算法的目的是返回元素所在的位置,或者說索引,甚至,只是簡單地定位到第一個對應的元素,而不需要找到後繼續。這種行為是由於演算法的指令而發生的,當條件滿足時,執行帶有元素索引的返回,然後退出循環,結束函數。
該演算法在列表較小或無序列表的場景中非常有用。每個元素都可以需要遍歷,並且沒有額外的記憶體佔用。
2。二分查找
二分搜尋演算法是一種更有效的演算法形式,用於在排序數組中尋找給定值。這是透過重複將搜尋範圍一分為二來實現的,這使得它比大型資料集的線性搜尋要快得多。二分查找的複雜度為 O(log n),而線性查找的複雜度為 O(n)。
作為 JavaScript 中的範例,我們有:
function linearSearch(array, target) { for (let i = 0; i < array.length; i++) { if (array[i] === target) { return i; } } return -1; }
邏輯由兩個指標開始,一個位於陣列的開頭(低位),另一個位於陣列的末端(高位)。因此,計算中間索引 const middle = Math.floor((low high) / 2)。這樣,每一步都會將中間元素與目標進行比較:如果中間元素等於目標,則傳回索引。但是,如果中間元素小於目標,或 middle 則目標,大於目標的數字被丟棄,調整最終索引為高=中 - 1。重複此過程,直到找到目標或當範圍變得無效時,在低> 的情況下。高。
在尋找有序資料(例如在字母字典或一組有序日期中)時,二分搜尋非常有效。它們往往更快、更有高效,因為每次迭代中問題都可以分為更小的子問題。
因此,可以理解線性搜尋很簡單並且適用於小型清單。二分查找效率較高,但需要有序資料。
了解不同演算法的工作原理及其使用環境是建立高效計算解決方案的重要一步。嘗試實施和分析這些方法,並發現如何調整這些策略來解決現實世界的挑戰。 =)
以上是演算法:線性搜尋和二分搜索的詳細內容。更多資訊請關注PHP中文網其他相關文章!