문자열 버블 정렬하기

투비·2023년 11월 26일
0

<버블 정렬>

큰 값을 점점 뒤로 밀어내면서 정렬이 진행된당

  for (int i = 0; i < NUM_OF_FRUIT - 1; i++) {
      for (int j = 0; j < (NUM_OF_FRUIT - 1) - i; j++) {
          if (strcmp(fruit[j], fruit[j + 1]) > 0) { 
              strcpy(temp, fruit[j]);               
              strcpy(fruit[j], fruit[j + 1]);
              strcpy(fruit[j + 1], temp);
          }
      }
  }
  • strcmp : 저장된 문자열의 아스키코드값 비교
    strcmp(a,b) < 0a가 b보다 앞에 있음
    strcmp(a,b) = 0a = b

  • strcpy : 문자열 복사
    strcpy(a,b)a = b

       

<작성한 코드>

#define _CRT_SECURE_NO_WARNINGS // 비주얼 스튜디오에서 strcpy()사용시 경고를 무시하기 위함
#include <stdio.h> 
#include <string.h> 

#define NUM_OF_FRUIT 7
#define LEN_OF_FRUIT 15

int main() {
    char fruit[NUM_OF_FRUIT][LEN_OF_FRUIT] = { "banana", "apple", "grape", "orange", "kiwi", "pear", "watermelon" };
    char temp[LEN_OF_FRUIT]; // 임시 변수

    // 원본 문자열 출력
    printf("원본 문자열: ");
    for (int i = 0; i < NUM_OF_FRUIT; i++) {
        printf("%s ", fruit[i]);
    }

    // 버블 정렬
    for (int i = 0; i < NUM_OF_FRUIT - 1; i++) {
        for (int j = 0; j < (NUM_OF_FRUIT - 1) - i; j++) {
            if (strcmp(fruit[j], fruit[j + 1]) > 0) { // 문자열 비교
                strcpy(temp, fruit[j]);               // 문자열 서로 바꾸기
                strcpy(fruit[j], fruit[j + 1]);
                strcpy(fruit[j + 1], temp);
            }
        }
    }

    // 문자열 정렬 후 출력
    printf("\n정렬한 문자열: ");
    for (int i = 0; i < NUM_OF_FRUIT; i++) {
        printf("%s ", fruit[i]);
    }

    return 0;
    
}

0개의 댓글