Page 57 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 57
방금 작성한 알고리즘에 따라 배열 a의 요소에서 최댓값을 구하는 과정은 다음과 같습니다.
max = a[0]; 1
for(i = 1; i < n; i++) 2
if(a[i] > max) max = a[i];
max
1 2 3 4
1 22 57 11 91 32 22
max보다 큰 요소를 만났습니다.
0 2 3 4
2 22 57 11 91 32 57
0 1 3 4
22 57 11 91 32 57
max보다 큰 요소를 만났습니다.
0 1 2 4
22 57 11 91 32 91
0 1 2 3
22 57 11 91 32 91
[그림 2-8] 배열 요소의 최댓값을 구하는 과정의 한 예
그림에서 ● 안의 값은 우리가 살펴볼 요소의 인덱스입니다. 살펴볼 요소는 첫 번째부터 시
작하여 하나씩 뒤쪽으로 이동합니다. 1 에서는 a[0]을 살펴보고 a[0]의 값을 max에 대입합
니다. 그리고 2 의 for문에서는 a[1]부터 마지막 요소 a[n – 1]까지 차례로 살펴봅니다. 이처
럼 배열의 요소를 하나씩 차례로 살펴보는 과정을 알고리즘 용어로 주사(走査, traverse)라고
합니다.
조금만 더! 주사의 정확한 뜻이 궁금해요!
주사(走査)는 원래 텔레비전 화면이나 사진을 전송할 때 화면을 여러 개의 점으로 나눠 그 점을 전기 신호로
바꾸는 일 또는 이 전기 신호에서 점을 조립하여 화면을 재구성하는 일을 말합니다. 즉, 스캐닝(scanning)
을 의미합니다. 이 책에서 주사는 데이터를 하나씩 지나면서(走, 달릴 주) 살피고, 조사하는(査, 조사할 사) 일
을 말합니다. 영어로는 traverse라고 하는데, 이는 가로지르다, 횡단하다는 뜻입니다.
주사 과정에서 if문의 제어식 a[i] > max가 참일 때(살펴보고 있는 요소 a[i]의 값이 최댓값 max보다
02• 기본 자료구조 57