Q. 배열에 기억된 10건의 자료를 오름차순으로 정렬하는 순서도를 작성하시오. 단 정렬 수행중 특정 회전에서 정렬을 위한 교환이 한번도 이루어지지 않으면 정렬이 완료된 것이므로 그 때까지 교환 횟수와 정렬된 자료를 출력하고 끝낸다.
1. 자료가 저장될 배열 DATA를 선언한다.
2. N은 1씩 누적되며 증가하는 변수이므로 N을 0으로 초기화한다.
3. N을 1에서 10까지 증가시키기 위해 1을 더한다.
4. 정렬할 숫자를 입력받는다.
5. 입력받은 수의 개수가 10보다 작으면 다음 값을 입력받는다.
1) Yes일 경우, 3으로 간다.
2) No일 경우, 6으로 간다.
6. 자료의 횟수 CNT는 1씩 누적되며 증가하는 변수이므로, CNT를 0으로 초기화한다.
7. 바깥쪽 반복문은 정렬의 회전수를 지정한다. 정렬에서 회전수는 항상 자료의 수보다 1작다는 것을 생각한다.
1) 새로운 회전을 시작할 때 플래그변수를 0으로 초기화한다.
2) 안쪽 반복문은 각 회전에서 비교할 횟수를 지정한다. 비교 횟수는 1회전이면 1회를 제외(10-1)하고, 2회전이면 2회를 제외(10-2)하고, i회전이면 i회를 제외(10-i)해야 하므로, 반복변수 J는 1에서 10-i까지 1씩 증가하면서 반복한다.
A. DATA(J)가 DATA(J+1)보다 크면 두 값을 교환한다.
1) No일 경우, 다음 반복을 진행한다.
2) Yes일 경우, K에 DATA(J)를 입력한다.
3) DATA(J)에 DATA(J+1)을 입력한다.
4) DATA(J+1)에 K를 입력한다.
5) 자료교환 횟수를 증가시킨다.
6) 자료 교환이 이루어졌으므로 플래그 변수의 값을 1로 변경한다. 그리고 반복 체크한다.
3) 반복이 종료되면 다음 회전을 수행할지를 판단한다.
이전 회전에서 자료의 교환이 한번도 이루어지지 않았다면 SW의 값이 회전을 시작할 때의 초기값을 그대로 가지고 있을 것이다. 초기값을 얼마를 가지고 이작했는지 생각한다.
A. No일 경우, 반복을 체크한다.
B. Yes일 경우, 반복을 빠져나가서 CNT와 DATA에 저장된 값을 출력하고 끝낸다.
해당 글을 제가 만들 어플을 기준으로 작성하였습니다.
더 자세항사항은 알고리즘 어플을 참조하시기 바랍니다.
'Study > Algorithm_정보처리기사' 카테고리의 다른 글
[정보처리기사][알고리즘][자료구조] 삽입정렬 (0) | 2015.08.21 |
---|---|
[정보처리기사][알고리즘][자료구조] 버블정렬3 (0) | 2015.08.21 |
[정보처리기사][알고리즘][자료구조] 버블정렬 (0) | 2015.08.21 |
[정보처리기사][알고리즘][자료구조] 선택정렬 (2) | 2015.08.21 |
[정보처리기사][알고리즘][수학] 이진수 더하기 (0) | 2015.08.15 |
댓글