[c] 배열과 탐색 알고리즘

이 기술 블로그에서는 배열 자료 구조와 관련된 탐색 알고리즘에 대해 알아보겠습니다.

배열 (Array)

배열은 같은 타입의 요소들을 순서대로 저장하는 자료 구조입니다. 각 요소는 인덱스를 사용하여 접근할 수 있습니다.

이미지와 같은 다양한 데이터 유형을 저장하고, 각 요소에 빠르게 접근할 수 있는 메모리 공간을 할당함으로써, 배열은 매우 유용합니다.

int[] numbers = new int[5];

배열은 고정된 크기를 가지고 있어, 요소의 추가나 삭제가 어렵습니다.

탐색 알고리즘 (Search Algorithms)

탐색 알고리즘은 배열이나 다른 자료구조에 저장된 요소 중에서 특정 항목을 찾는 과정을 의미합니다. 몇 가지 대표적인 탐색 알고리즘에는 선형 탐색이진 탐색이 있습니다.

선형 탐색은 요소를 순서대로 검사하여 찾고자 하는 항목을 찾을 때까지 반복하는 방식입니다.

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

이진 탐색은 정렬된 배열에서 중간 요소와 비교하여 탐색 범위를 반으로 줄여가며 탐색하는 방식입니다.

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;

  while (left <= right) {
    let mid = Math.floor((left + right) / 2);
    if (arr[mid] === target) {
      return mid;
    } else if (arr[mid] < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  return -1;
}

결론

배열은 데이터를 효율적으로 관리하고 탐색 알고리즘은 효율적으로 항목을 찾는 데 유용합니다. 올바른 데이터 구조와 탐색 알고리즘의 선택은 프로그램의 효율성을 크게 향상시킬 수 있습니다.

참고 자료