Quick Sort 알고리즘을 이용하여 C 스트링들을 분류하는 소스입니다.
#include를 #import로 바꾼 것 외에는 C 소스와 똑 같습니다.
Dev-C++ IDE 에서도 캄파일과 실행이 잘 됩니다.
-----------------------------------------------------------------
/**
* Filename: testSort.m
*
* Compile: gcc -o testSort testSort.m -lobjc
* Execute: ./testSort 하나 둘 셋 넷
* ./testSort one two thee four
*
* Date: 2012/05/02
* Author: pkim (AT) scripts.pe.kr
*/
#import <stdio.h>
#import <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");
}
/*
실행 및 실행 결과:
$ ./testSort 하나 둘 셋 넷
[넷, 둘, 셋, 하나]
$ ./testSort one two thee four
[four, one, thee, two]
*/
------------------------------------------------
컴파일> Dev-C++ 개발 도구(IDE)에서 Ctrl+F11 클릭
또는
컴파일> gcc -o testSort testSort.m -lobjc
실행> testSort 하나 둘 셋 넷
[넷, 둘, 셋, 하나]
실행> ./testSort one two thee four
[four, one, three, two]
'프로그래밍 > Objective-C' 카테고리의 다른 글
Objective-C 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제 (0) | 2013.01.06 |
---|---|
손으로 계산하는 긴자리 곱셈표 만들기 with Objective-C (0) | 2012.05.01 |
손으로 만드는 나눗셈 계산표 with Objective-C (0) | 2012.05.01 |
삼각형 출력 예제를 통한 여러 가지 소스 비교 with Objective-C (0) | 2012.05.01 |
7비트 ASCII 코드표 만들기 예제 with Objective-C (0) | 2012.05.01 |