[알고리즘 C언어] 2.2.2 순차 정렬 알고리즘 구현

이번에는 순차 정렬 알고리즘을 구현해 보기로 해요.

순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리)

    반복(i:=0->n)

        반복(j:=i+1->n)

            조건(compare(base[i], base[j]) > 0)

                교환(base[i],base[j])

 

이번에는 순차 정렬 알고리즘을 구현하는 예를 보여드릴게요.

먼저 두 개의 정수 값을 교환하는 SWAP 매트로 함수를 작성합니다.

이 책에서는 정수 형식 배열을 정렬하는 함수를 만들기로 할게요. 원소 형식에 관계없이 정렬하는 방법은 디딤돌 정렬 알고리즘 (C언어)를 참고하세요.

그리고 여기에서는 정렬 알고리즘을 수행하면서 배열의 원소 값을 교환할 때마다 콘솔 화면에 출력하도록 합시다. 실제 정렬 알고리즘에서는 정렬 과정에서 출력하는 부분을 정의할 필요는 없습니다. 따라서 여기에서 작성하는 ViewArr 함수를 주석 처리를 하면 정렬 알고리즘을 구현한 함수로 볼 수 있습니다.

순차 정렬은 이중 반복문을 사용합니다. 외부 반복문은 0에서 n까지 순차적으로 이동합니다.

내부 반복문에서는 인덱스 i 뒤쪽 요소들 중에 인덱스 i보다 작은 값이 있으면 인덱스 i번째 요소와 교환하는 것을 반복합니다. 이를 통해 인덱스 i에서 마지막 원소 중에 제일 작은 값을 인덱스 i로 이동할 수 있습니다.

인덱스 i 와 인덱스 j요소의 값을 비교하여 i번째 요소가 더 크면 두 개의 값을 교환합니다.

여기에서는 값을 변경할 때마다 결과를 화면에 출력하기 위해 ViewArr 함수를 호출하고 있습니다. 실제 정렬 알고리즘에서 이 함수는 필요가 없습니다. 따라서 실제 정렬 알고리즘을 구현할 때 ViewArr 함수 호출 부분은 주석 처리하세요.

테스트 목적으로 배열의 내용을 출력하는 함수입니다.

인덱스 0에서 마지막 요소까지 값을 출력합니다.

전체 요소 값을 출력한 후에 개행 문자를 출력합니다.

순차 정렬 알고리즘 실행 화면
순차 정렬 알고리즘 실행 화면


학습에 도움이 되시면 ebook을 구입(판매가 3000원, ebook)하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.

디딤돌 알고리즘 C언어는 디딤돌 자료구조와 알고리즘 with C언어에서 알고리즘 부분을 다루고 있어서 많은 부분에서 비슷합니다.