버블 정렬로 프로그래밍 강좌 정렬하기

CBeginner
지금 연습하기

소개

이 프로젝트에서는 버블 정렬 알고리즘을 사용하여 프로그래밍 강좌 목록을 정리하는 방법을 배우게 됩니다. 강좌는 사전식 순서로 정렬되어, 학습한 프로그래밍 언어를 쉽게 확인하고 요약할 수 있습니다.

👀 미리보기

$ gcc courses.c -o courses
$ ./courses
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 배열의 길이를 올바르게 계산하는 방법
  • 정렬 함수의 매개변수 유형을 수정하는 방법
  • 정렬 알고리즘에서 비교 및 교환 로직을 수정하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 버블 정렬 알고리즘을 사용하여 프로그래밍 강좌 목록을 정리합니다.
  • 적절한 배열 길이 계산 및 함수 매개변수 유형의 중요성을 이해합니다.
  • 정렬 알고리즘에서 올바른 비교 및 교환 로직을 적용합니다.
  • 단계별 지침을 따르고 원하는 결과를 얻기 위해 기존 코드를 수정하는 능력을 보여줍니다.

배열 길이 계산 수정

이 단계에서는 courses 배열의 길이를 올바르게 계산하는 방법을 배우게 됩니다.

  1. /home/labex/project/ 디렉토리에 있는 courses.c 파일을 엽니다.

  2. 다음 코드 줄을 찾습니다:

    int n = strlen(courses);

    이 줄은 strlen 함수를 사용하여 courses 배열의 길이를 계산하는데, 이는 잘못되었습니다. strlen 함수는 문자열의 길이를 계산하는 데 사용되며, 배열에는 적합하지 않습니다.

  3. 위의 줄을 다음으로 바꿉니다:

    int n = sizeof(courses) / sizeof(courses[0]);

    이 줄은 sizeof 연산자를 사용하여 courses 배열의 전체 크기를 계산한 다음, 단일 요소의 크기로 나누어 배열의 요소 수를 구합니다.

✨ 솔루션 확인 및 연습

정렬 함수의 매개변수 타입 변경

이 단계에서는 sort 함수의 매개변수 유형을 변경하는 방법을 배우게 됩니다.

  1. courses.c 파일에서 sort 함수 정의를 찾습니다:

    void sort(char p[], int n)
  2. 매개변수 유형을 char p[]에서 char *p[]로 변경합니다. 업데이트된 함수 정의는 다음과 같아야 합니다:

    void sort(char *p[], int n)

    이 변경은 문자열 배열 (포인터 배열) 을 다루고 있기 때문에 필요하며, 단일 문자열을 다루는 것이 아닙니다.

✨ 솔루션 확인 및 연습

비교 및 스와핑 로직 수정

이 단계에서는 sort 함수에서 비교 및 스와핑 로직을 수정하는 방법을 배우게 됩니다.

  1. sort 함수에서 다음 코드를 찾습니다:

    if (k != j)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }
  2. 조건 if (k != j)if (k != i)로 바꿉니다. 업데이트된 코드는 다음과 같아야 합니다:

    if (k != i)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }

    이 변경은 현재 반복 (인덱스 i로 표시됨) 에서 가장 작은 요소가 발견되었는지 확인하기 위해 필요합니다.

이 세 단계를 완료하면 courses.c 파일이 컴파일 및 실행 준비가 됩니다. 이제 다음 단계로 진행할 수 있습니다.

  1. sort 함수에서 // TODO: 섹션을 다음과 같이 완성합니다:

    {
         if (strcmp(p[j], p[k]) < 0)
         {
             k = j;
         }
    }
  2. 다음 명령을 실행합니다:

gcc courses.c -o courses
./courses
  1. 프로그램이 예상 출력을 생성하는지 확인합니다.
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.