어떠한 알고리즘을 구현할 때 매크로를 이용하는 방법이 있고 함수를 이용하는 방법이 있다.
매크로란 전치리문에서 수행하며 마치 상수를 정의하는 것과 비슷하다.
C언어에서는 #define 문을 사용하여 매크로를 선언한다.
예> #define TWO 2
이진탐색 알고리즘의 예를 통하여 함수를 사용하는 방법과 매크로를 사용하는 방법에 대하여 알아보자.
1 .Binary Search ( Iterative Version )
int binsearch ( int list[] , int searchnum , int left , int right ) {
int middle;
while ( left <= right ){
middle = ( left + right ) / 2
switch ( compare (list[ middle ],searchnum) ){
case -1 : left = middle +1 ;
case 0 : return middle;
case 1 : right = middle -1 ;
}
}
return -1;
}
//함수 이용방법
int compare ( int a, int b )
{
if (a < b )
return -1;
else if ( a == b )
return 0;
else
return 1;
}
위의 이진탐색 알고리즘에서 두 수를 비교하는 역할은 compare라는 함수가 하고 있다.
이 부분을 매크로를 이용하여 보자.
가장 기본적인 매크로 사용법은 위에 나와있다.
매크로를 함수처럼 이용하기 위해서는 인자를 갖는 매크로의 사용법을 알아야한다.
2. 인자를 갖는 매크로
#define SQUARE(x) x*x
main(){
int y ;
y= 3;
printf("%d\n" , SQUARE(y));
}
위의 결과는 3*3=9를 출력하게 된다.
3. compare 함수의 매크로 구현
위의 인자를 갖는 매크로를 이용하면 함수를 매크로로 구현할 수 있다.
#define COMPARE ( x,y ) ( ( (x) < (y) ) ? -1 : ((x) == (y)) ? 0 : 1 )
위의 매크로를 사용하면 이 부분이
switch ( COMPARE (list[ middle ],searchnum)) 로 바뀌게 된다.
일반적으로 수행속도는 함수보다는 매크로가 빠르다고 한다.
매크로란 전치리문에서 수행하며 마치 상수를 정의하는 것과 비슷하다.
C언어에서는 #define 문을 사용하여 매크로를 선언한다.
예> #define TWO 2
이진탐색 알고리즘의 예를 통하여 함수를 사용하는 방법과 매크로를 사용하는 방법에 대하여 알아보자.
1 .Binary Search ( Iterative Version )
int binsearch ( int list[] , int searchnum , int left , int right ) {
int middle;
while ( left <= right ){
middle = ( left + right ) / 2
switch ( compare (list[ middle ],searchnum) ){
case -1 : left = middle +1 ;
case 0 : return middle;
case 1 : right = middle -1 ;
}
}
return -1;
}
//함수 이용방법
int compare ( int a, int b )
{
if (a < b )
return -1;
else if ( a == b )
return 0;
else
return 1;
}
위의 이진탐색 알고리즘에서 두 수를 비교하는 역할은 compare라는 함수가 하고 있다.
이 부분을 매크로를 이용하여 보자.
가장 기본적인 매크로 사용법은 위에 나와있다.
매크로를 함수처럼 이용하기 위해서는 인자를 갖는 매크로의 사용법을 알아야한다.
2. 인자를 갖는 매크로
#define SQUARE(x) x*x
main(){
int y ;
y= 3;
printf("%d\n" , SQUARE(y));
}
위의 결과는 3*3=9를 출력하게 된다.
3. compare 함수의 매크로 구현
위의 인자를 갖는 매크로를 이용하면 함수를 매크로로 구현할 수 있다.
#define COMPARE ( x,y ) ( ( (x) < (y) ) ? -1 : ((x) == (y)) ? 0 : 1 )
위의 매크로를 사용하면 이 부분이
switch ( COMPARE (list[ middle ],searchnum)) 로 바뀌게 된다.
일반적으로 수행속도는 함수보다는 매크로가 빠르다고 한다.
'자료구조 & 알고리즘 > 자료구조' 카테고리의 다른 글
재귀 알고리즘 #1 팩토리얼과 거듭제곱 (0) | 2011.12.01 |
---|