[문제 2] 컴퓨터를 이용하여 특정한 작업을 수행할 때, 어떻게 컴퓨터에 명령하느냐에 따라 빠른 시간 안에 원하는 정보를 획득하기도 하고 그렇지 못하기도 한다. 시간의 중요성이 빠르게 인식되고 있는 현대사회에서는, 컴퓨터를 효율적으로 이용하여 원하는 정보를 빠른 시간 내에 생산하는 명령체계(알고리즘)를 개발 이용하는 것이 중요한 이슈가 되고 있다. 아래에서는, 임의의 n개의 서로 다른 숫자 a1,…,an이 컴퓨터에 입력되었을 때 이를 증가하는 순서로 정리하는 두 가지의 다른 알고리즘을 소개하고 있다.
(알고리즘 1)스텝 1. a1에 새로 이름을 주어 b1이라고 하자.스텝 2. a1,…,ak를 증가하는 순서대로 정리하여 b1,…,bk라고 부르기로 하자. ak+1을 이미 정리되어 있는 b1,…,bk와 비교하여 정리하려고 한다. 이를 위하여 ak+1을 기존 b1,…,bk의 작은 숫자부터 차례로 비교하여 ak+1이 들어가야 할 위치를 알아내고 그 위치에 ak+1를 집어넣는다.스텝 3. 스텝 2를 반복하여 a1,…,an이 정리되면, 알고리즘을 종료한다.
(알고리즘 2)스텝 1. a1에 새로 이름을 주어 b1이라고 하자.스텝 2. a1,…,ak를 증가하는 순서대로 정리하여 b1,…,bk라고 부르기로 하자. ak+1을 이미 정리되어 있는 b1,…,bk와 비교하여 정리하려고 한다.스텝 2-A. b1,…,bk 중 가운데 배치되어있는 b[(k+1)/2]와 ak+1을 비교하여, ak+1이 b[(k+1)/2]보다 작으면 ak+1을 b[(k+1)/2]의 왼쪽에 배치하고 반대의 경우 오른쪽에 배치한다.스텝 2-B. ak+1이 bl보다 크고 bl+m+1보다 작다고 하자. 이제 ak+1을 bl와 bl+m+1사이에 배치되어있는 bl+1,…,bl+m와 비교하여 정리하려고 한다. bl+1,…,bl+m 중 가운데 배치되어있는 bl+[(m+1)/2]와 ak+1을 비교하여, ak+1이 bl+[(m+1)/2]보다 작으면 ak+1을 bl+[(m+1)/2]의 왼쪽에 배치하고 반대의 경우에는 오른쪽에 배치한다.스텝 2-C. 스텝 2-B를 반복하여 a1,…,ak+1이 정리되면, 스텝 2를 종료한다.스텝 3. 스텝 2를 반복하여 a1,…,an이 정리되면, 알고리즘을 종료한다.
(1) 위 두 알고리즘 중 어느 알고리즘이 우수한지 판단하기 위하여 알고리즘의 성능을 측정하는 지표를 만들고, 지표의 적정성에 관하여 논하시오. (배점; 10점)
(2) (1)에서 제시한 지표를 이용하여 어느 알고리즘이 우수한지 판정하고, 판정근거를 제시하시오. (배점; 15점)