DataStructure

SequentialSearch (순차 탐색)

S0LL 2024. 6. 22. 23:43

순차 탐색이란, 배열이 주어졌을 때, 앞에서부터 순차적으로 찾는 탐색입니다.

 

이런 배열이 주어졌을 때, 9를 찾으려면 어떻게 해야할까요?

 

우리가 눈으로 보기에 그냥 바로 9가 보이겠지만 컴퓨터는 그렇게 할 수 없습니다.

 

배열의 크기가 100만개, 1000만개 이렇게 기하급수적으로 커지면 우리의 눈으로도 한번에 찾을 수 없겠죠.

 

 

순차 탐색의 과정을 살펴보겠습니다.

이렇게, 첫 번째 칸부터 9인지 아닌지 판단하며 나아갑니다.

 

결국 9번째 칸까지 도달하고서야 9라는 숫자를 찾을 수 있겠죠.

 

이를 프로그래밍 언어로 어떻게 구현할 수 있을까요?

 

 

코드)

int SequentialSearch(int* arr, int size, int n) {
  int i;
  for (i = 0; i < size && arr[i] != n; i++) { /*do nothing*/
  };
  if (i == n)
    return -1;
  else
    return i;
}

 

순차 탐색 함수입니다.

배열, 배열의 크기, 찾을 수를 인자로 받아와 찾는 값이 있으면 그 값의 인덱스를 반환하고,

찾는 값이 없는 경우 -1을 반환합니다.

 

코드도 길지 않고 꽤나 쉽게 구현할 수 있습니다.

 

 

 

 

시간 복잡도)

순차 탐색의 시간 복잡도는 어떨까요?

 

1. 최선의 경우

최선의 경우는 찾고자 하는 데이터가 맨 앞에 있는 경우입니다.

이 경우 O(1) 이겠죠.

 

2. 최악의 경우

최악의 경우는 찾고자 하는 데이터가 맨 뒤에 있는 경우입니다.

순차 탐색은 n개의 배열의 맨 앞에서부터 차례대로 탐색을 하기 때문에

이 경우 O(n) 이라고 표현할 수 있습니다.

'DataStructure' 카테고리의 다른 글

AVL Tree  (0) 2024.09.24
BinarySearch (이진탐색)  (0) 2024.06.25
InsertionSort (삽입 정렬)  (0) 2024.06.20
BubbleSort (버블정렬)  (0) 2024.06.19
SelectionSort (선택 정렬)  (0) 2024.06.19