이번에 학교에서 알고리즘 수업을 듣는 학생입니다.
교수님께서 풀어보라고 하신 문제들인데.... 밤새 고민을 해보아도
어떻게 프로그램을 짜야할지 머리속에서 떠오르질 않습니다;;;
심정 같아선 코딩까지 부탁드려서 보고 이렇게 하는구나라고 고민하는것이 좋겠지만
너무 염치없는 부분인것 같고...;
이 문제들을 보시고 어떻게 프로그램을 짜야할지 방향만이라도 제시해주신다면
공부하는데 큰 도움이 될 것 같습니다. ^^
1. 다음과 같이 삽입정렬의 각 단계를 출력하도록 하라. 왼쪽괄호 안에 있는 숫자는 정렬이 되어 있는 숫자들이다. 오른쪽은 정렬을 해야 할 숫자들이다. 삽입정렬의 단계에서 다음과 같이 출력하도라 하라.
( ) (17,9,21,6,3,12)
(17) (9,21,6,3,12)
(9,17) (21,6,3,12)
:
:
(3,6,9,12,17,21) ( )
2.퀵 정렬에서 함수가 수행되면서 정렬의 매 패스마다 다음과 같은 형식으로 화면에 출력하시오. (가정: 피봇은 맨 처음 데이터로 한다)
high
* 예) 패스1
low
67 90 57 25 84 32 74 54
high
low
67 54 57 25 84 32 73 90
low
high
67 54 57 25 73 32 84 90
high
low
67 90 57 25 32 73 84 54
high
low
32 90 57 25 67 73 84 54
:
:
3. 위 예제에서 재귀 호출을 추적하기 위하여 quick-sort() 함수가 호출될 때마다 함수 이름과 인수의 값을 화면에 출력하시오.
quick_sort(0,7)
:
;
4. 합병정렬에서 재귀 호출을 추적하기 위하여 mergeSort()함수가 호출될때마다 함수 이름과 인수의 값을 화면에 출력하시오.
초기값: 8,2,5,7,6,4,1,3
mergeSort(A,0,7)
mergeSort(A,0,3)
:
:
5. 위 합병정렬에서 진행 단계별로 호출되는 merge() 함수 결과를 출력하시오.
예) 2 8
5 7
2 5 7 8
;
;
|