정보처리기사 실기 기출문제 버블 정렬 알고리즘 c언어 예제

2018년도 정보처리기사 실기 시험은 1회 4월 14일 ~ 4월 27일, 2회 2018.06.30 ~ 2018.07.13, 3회 2018.10.06 ~ 2018.10.19 에 진행 됩니다.


수험을 준비하시는 분들에게 조금이나 도움이 될지 않을까 싶어 이번시간에는 버블 정렬 알고리즘에 대해서 c언어 예제포함해서 설명드리겠습니다.


저도 정보처리기사 공부하면서 필기해둔 부분이기 때문에 지극히 개인적인 입장에서 글을 적는것이니 정확하지 않을수도 있다는점 참고하세요.


우리가 알고 있는 정렬 알고리즘에는 삽입정렬, 퀵정렬, 선택정렬, 버블정렬이 있습니다. 그밖에 많은 정렬 알고리즘이 있는데, 버블정렬 알고리즘이 생각보다 복잡해서 정리해봤습니다.


버블정렬이란 인접한 두 값을 비교하여 정렬하는 알고리즘 기법이며, 한쪽에서 다른 한쪽으로 크기를 비교하여 교환함으로써 반대편까지 가게 되면 가장 큰 값 또는 가장 작은 값이 한쪽 끝으로 이동하는 방식입니다.


순서도를 통해서 설명드리겠습니다.


[순서도]


순서도는 그림실력이 없어서 그냥 대충 그림판으로 작성했습니다. 알고리즘은 복잡한 편은 아닙니다. 컴퓨터 전공자라면 대충 훌터보면 근방 알 수 있습니다.



설명드리면, N=10 같은 경우에는 배열에 데이터 총 저장 개수를 의미 합니다. 이외의 변수들은 FLAG,Q,J 경우에는 분기점에서 조건을 만족시킬 경우에 YES, NO로 나뉘게 되는것입니다.


결국에는 버블정렬은 인접한수와 교환하는것인데, 5,2,1,3 이렇게 있다고 예를들면 하나씩 비교해보는 과정을 그리기 위해서 FLAG,Q,J의 변수를 사용하는 것입니다.



여기서 중요한 점은 중간에 있는 교환하는 부분입니다. 설명을 드리면 서로 데이터가 교환되는 방식인데요, A(J) 자리에는 A(J+1) 자리에 있는 값을 저장하고, A(J+1)자리에는 A(J)값을 저장하게 됩니다.


[C언어코딩]


자세한 내용은 주석을 참조하시면 됩니다. 마지막에 이중 while문을 사용해서 적용시키면 됩니다. 그밖에도 순서도에 있는 부분을 그대로 옮겨놓았다고 보면 간편합니다.


[결과]


결과모습입니다. 사용자가 임의의 숫자를 입력하여도, 출력은 1 ~ 10까지 순서대로 출력되는걸 확인할 수 있습니다.



기초적인 알고리즘은 논리적인 사고를 크게 요구하지는 않습니다. 그래도 이런 알고리즘을 보면서 지속적으로 생각하고, 고민하게 되면 논리적인 사고와 수학적인 개념이 생겨서 좋을것 같습니다.


정보처리기사 준비하시는 분들 파이팅하세요.