큰 값을 점점 뒤로 밀어내면서 정렬이 진행된당
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) < 0
→ a가 b보다 앞에 있음
strcmp(a,b) = 0
→ a = 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;
}