---
# System prepended metadata

title: 線性搜尋(Linear Search or Sequential Search)
tags: [' LeetCode', 演算法]

---

---
tags: 演算法, LeetCode
disqus: HackMD
---

# 線性搜尋(Linear Search or Sequential Search)

## 介紹

是一種陣列搜尋的演算法，從頭依序開始查找目標，直到找到目標數

![](https://i.imgur.com/BOBvfWD.gif)
(圖片來自於[Data Structure and Algorithms Linear Search](https://www.tutorialspoint.com/data_structures_algorithms/linear_search_algorithm.htm))


## 虛擬碼

```pseudocode=
LINEAR-SEARCH(array, n):
    for i from 0 to array.length - 1:
        if (array[i] == n):
            return i
    return -1
```

## 複雜度

### 時間複雜度

最壞(查找位置剛好在最後一項):

$O(n)$

最好(查找位置在第一項):

$O(1)$

平均:

$O(N/2)$

### 空間複雜度

因需要一個計數器和一個遍歷數據結構的指針

$O(1)$

## 程式碼

```javascript=
function linearSearch(arr, n){
    for (let i = 0; i < arr.length; i++) {
        const element = arr[i];
        if(element == n){
            return i;
        }
    }
    return -1;
}

let arr = [8,7,9,10,5,56,78,98];

console.log(linearSearch(arr, 56)); // 5
console.log(linearSearch(arr, 99)); // -1
```