[파일명: testSort.c]------------------------------------------------
#include <stdio.h>
#include <string.h>
char SBUF[20][80];
char TBUF[80];
void quickSort(char array[20][80], int start, int end);
void swap(char array[20][80], int x, int y);
void printArray(char array[20][80], int start, int end);
void exit(int n);
int main(int argc, char* argv[]) {
char* pbuf;
int i;
if (argc > 1 && argc < 22) {
for (i = 0; i < argc - 1; i++) {
if (strlen(argv[i+1]) > 79) {
printf("Caught: strlen(\"%s\") = %d, which is too long.\n", argv[i+1], strlen(argv[i+1]));
exit(1);
}
sprintf(SBUF[i], argv[i+1]);
}
quickSort(&SBUF[0], 0, argc - 2);
printArray(SBUF, 0, argc - 2);
}
else if (argc > 21) {
printf("Given too many items. (The counter of items should be less then 20.)\n");
exit(1);
}
return 0;
}
void quickSort(char array[20][80], int start, int end) {
int i = start;
int k = end;
char pivot[80];
if (end - start >= 1) {
strcpy(pivot, array[start]);
while (k > i) {
while (strcmp(array[i], pivot) <= 0 && i <= end && k > i)
i++;
while (strcmp(array[k], pivot) > 0 && k >= start && k >= i)
k--;
if (k > i) {
swap(array, i, k);
}
}
swap(array, start, k);
quickSort(array, start, k - 1);
quickSort(array, k + 1, end);
}
else {
return;
}
}
void swap(char array[20][80], int x, int y) {
strcpy(TBUF, array[x]);
strcpy(array[x], array[y]);
strcpy(array[y], TBUF);
}
void printArray(char array[20][80], int start, int end) {
int i;
printf("[");
for (i = start; i < end; i++) {
printf("%s, ", array[i]);
}
if (end >= start)
printf("%s", array[end]);
printf("]\n");
}
------------------------------------------------
컴파일> cl testSort.c
또는
컴파일> bcc32 testSort.c
또는
컴파일> gcc -o testSort testSort.c
실행> testSort 하나 둘 셋 넷
[넷, 둘, 셋, 하나]
실행> ./testSort one two thee four
[four, one, three, two]
'프로그래밍 > C' 카테고리의 다른 글
C 언어로 GMP 라이브러리를 이용하여 30! 까지 정확하게 계산하기 (3) | 2010.08.13 |
---|---|
C 언어의 long 타입으로 계산 가능한 최대 팩토리얼은? (0) | 2010.08.11 |
손으로 계산하는 긴 자리 곱셈표 만들기 with C (0) | 2009.03.07 |
여러 가지 무료 C 컴파일러를 위한 컨솔 입력 테스트 for C (0) | 2009.02.07 |
손으로 만드는 나눗셈 계산표 with C (0) | 2008.05.16 |