Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 배열을 내림차순으로 정렬하는 프로그램 만들기


문제 정의

주어진 배열의 요소들을 내림차순(또는 오름차순)으로 정렬하는 C 프로그램을 작성해야 합니다.

배열이란 무엇인가?

배열(Array)은 동일한 자료형의 관련 데이터 항목들이 하나의 공통된 이름 아래 모여 있는 자료 구조입니다. 배열 안의 특정 값은 인덱스 번호(index number)를 통해 식별할 수 있습니다.

배열 선언하기

C 언어에서 배열을 선언하는 기본 문법은 다음과 같습니다.

datatype array_name [size];

예시를 살펴보겠습니다.

float marks[50];

위 코드는 실수형(float) 요소 50개를 저장할 수 있는 'marks'라는 이름의 배열을 선언합니다.

int number[10];

위 코드는 정수형(int) 상수를 최대 10개까지 저장할 수 있는 'number'라는 배열을 선언합니다.

배열의 각 요소는 배열 인덱스(array index)로 구분되며, 인덱스를 사용하면 원하는 요소에 쉽게 접근할 수 있습니다. 참고로 C 언어의 배열 인덱스는 0부터 시작합니다.

내림차순 정렬 프로그램

다음은 배열을 내림차순으로 정렬하는 C 프로그램입니다. 이 프로그램은 선택 정렬(selection sort) 방식과 유사하게, 서로 다른 두 요소를 비교하여 큰 값이 앞쪽에 오도록 위치를 교환(swap)합니다.

#include <stdio.h>
void main (){
    int num[20];
    int i, j, a, n;
    printf("enter number of elements in an array\n");
    scanf("%d", &n);
    printf("Enter the elements\n");
    for (i = 0; i < n; ++i)
        scanf("%d", &num[i]);
    for (i = 0; i < n; ++i){
        for (j = i + 1; j < n; ++j){
            if (num[i] < num[j]){
                a = num[i];
                num[i] = num[j];
                num[j] = a;
            }
        }
    }
    printf("The numbers in descending order is:\n");
    for (i = 0; i < n; ++i){
        printf("%d\n", num[i]);
    }
}

프로그램 동작 원리

  1. 사용자로부터 배열에 저장할 요소의 개수(n)를 입력받습니다.
  2. 반복문을 통해 각 요소의 값을 차례대로 입력받아 배열에 저장합니다.
  3. 중첩 반복문을 사용하여 모든 요소 쌍을 비교하며, 앞의 값이 뒤의 값보다 작으면 임시 변수(a)를 이용해 두 값을 교환합니다.
  4. 정렬이 완료되면 배열의 처음부터 끝까지 순서대로 출력합니다.

만약 오름차순으로 정렬하고 싶다면 조건문의 비교 연산자만 변경하면 됩니다. 즉, if (num[i] < num[j])if (num[i] > num[j])로 바꾸면 작은 값부터 차례대로 정렬됩니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

enter number of elements in an array
4
Enter the elements
11
34
67
89
The numbers in descending order is:
89
67
34
11

입력된 네 개의 숫자(11, 34, 67, 89)가 가장 큰 수부터 작은 수 순서로 내림차순 정렬되어 출력된 것을 확인할 수 있습니다.