3.3. Search - 3.3.2 Linear Search

2024. 1. 24. 21:47ㆍCS - Roadmap.sh/3. Common Algorithms

CS - 3. Common Algorithms - 3.3. Search - 3.3.1 Linear Search

 

πŸ’‘ Linear search is a very simple algorithm that is used to search for a value in an array. It sequentially checks each element of the array until a match is found or until all the elements have been searched.

 

μ„ ν˜• κ²€μƒ‰μ€ λ°°μ—΄μ—μ„œ κ°’을 κ²€μƒ‰ν•˜λŠ” λ° μ‚¬μš©λ˜λŠ” λ§€μš° κ°„λ‹¨ν•œ μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. μΌμΉ˜ν•˜λŠ” ν•­λͺ©μ΄ λ°œκ²¬λ˜κ±°λ‚˜ λͺ¨λ“  μš”μ†Œκ°€ κ²€μƒ‰λ  λ•ŒκΉŒμ§€ λ°°μ—΄μ˜ κ° μš”μ†Œλ₯Ό μˆœμ°¨μ μœΌλ‘œ ν™•μΈν•©λ‹ˆλ‹€.

 

μ„ ν˜• 탐색(Linear Search)은 κ°€μž₯ 기본적인 탐색 μ•Œκ³ λ¦¬μ¦˜ μž…λ‹ˆλ‹€.

리슀트λ₯Ό μ²˜μŒλΆ€ν„° λκΉŒμ§€ 순차적으둜 νƒμƒ‰ν•˜λ©΄μ„œ 값을 μ°ΎλŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

κ°„λ‹¨νžˆ 말해, 리슀트의 μ²˜μŒλΆ€ν„° λ§ˆμ§€λ§‰κΉŒμ§€ μˆœμ„œλŒ€λ‘œ μ›ν•˜λŠ” 값을 찾을 λ•Œκ°€μ§€ ν™•μΈν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

 

 

In Python
def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i  # μ›ν•˜λŠ” 값이 λ¦¬μŠ€νŠΈμ—μ„œ 발견되면 인덱슀.
    return -1  # μ›ν•˜λŠ” 값이 λ¦¬μŠ€νŠΈμ— μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 -1.

μœ„μ˜ μ½”λ“œμ—μ„œ arrλŠ” 탐색할 리슀트, target은 찾고자 ν•˜λŠ” κ°’ μž…λ‹ˆλ‹€.

forλ°˜λ³΅λ¬Έμ—μ„œ len(arr) 둜 arr의 μš”μ†Œ 개수 만큼 νƒμƒ‰ν•©λ‹ˆλ‹€.

탐색 ν• λ•Œλ§ˆλ‹€ arr[i] == target으둜 λ§žλŠ”μ§€ μ‘°μ‚¬ν•©λ‹ˆλ‹€.


ꡬ체적인 ν™œμš©μ˜ˆμ‹œλŠ”
ν•™μƒλ“€μ˜ 성적을 λ‹΄κ³ μžˆλŠ” λ¦¬μŠ€νŠΈμ—μ„œ νŠΉμ • ν•™μƒμ˜ 성적을 μ°ΎλŠ” 문제λ₯Ό μ˜ˆμ‹œλ‘œ λ“€κ² μŠ΅λ‹ˆλ‹€.

학생 이름을 μž…λ ₯λ°›μ•„ 리슀트λ₯Ό 순차적으둜 탐색, ν•΄λ‹Ή ν•™μƒμ˜ 성적을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

탐색 κ³Όμ •μ—μ„œ ν•™μƒμ˜ 이름을 λΉ„κ΅ν•˜λ©° μΌμΉ˜ν•˜λŠ” 이름을 μ°Ύκ³ , μ—†μœΌλ©΄ 쑴재 ν•˜μ§€ μ•ŠμŒμ„ μ•Œλ¦½λ‹ˆλ‹€.

 

Linear SearchλŠ” μ •λ ¬λ˜μ§€ μ•Šμ€ λ¦¬μŠ€νŠΈμ—μ„œ νŠΉμ • 값을 찾을 λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€λ§Œ 리슀트의 크기가 맀우 ν¬κ±°λ‚˜, 탐색할 νšŸμˆ˜κ°€ λ§Žλ‹€λ©΄ μ‹œκ°„μ΄ 였래 κ±Έλ¦½λ‹ˆλ‹€.

μ΄λ–„λŠ” λ‹€λ₯Έ 탐색 μ•Œκ³ λ¦¬μ¦˜μ„ κ³ λ €ν•΄λ΄…μ‹œλ‹€.

 

728x90

'CS - Roadmap.sh > 3. Common Algorithms' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

3.4. Cache - 3.4.2 LFU Cache  (2) 2024.01.26
3.4. Cache - 3.4.1 LRU Cache  (2) 2024.01.25
3.3. Search - 3.3.1 Binary Search  (0) 2024.01.23
3.2. Recursion - 3.2.2 Non-Tail Recursion  (0) 2024.01.22
3.2. Recursion - 3.2.1 Tail Recursion  (0) 2024.01.21