'Language/C Language'에 해당되는 글 4건

QuickSort

Language/C Language

int partition(int theList[], int start, int end)
{	int pivot = theList[end];                                       
    int bottom = start-1;                                                   
    int top = end;                                                           
    bool notdone = true;
    while (notdone)
	{
        while (notdone)
	{
            bottom += 1;                  
            if (bottom == top)   
	    {
                notdone = false;                        
                break;
	    }
            if (theList[bottom] > pivot)   
	     {
                theList[top] = theList[bottom];       
                break;
	     }
	}  
	while (notdone)
	{
            top = top-1;                      
            
            if (top == bottom) 
	    {
                notdone = false;                      
                break;
	     }
            if (theList[top] < pivot)
	    {   
                theList[bottom] = theList[top];
		break;
	     }      
	}
    }
    theList[top] = pivot;                          
    return top;
}//Actual function call within program
int quickSort(int theList[], int start, int end)
{	if (start < end)     
	{
             int split = partition(theList, start, end);   //recursion   
             quickSort(theList, start, split-1);         
             quickSort(theList, split+1, end); 
	}
        else
	{
             return 0;
	}
}

'Language > C Language' 카테고리의 다른 글

2-Way Merge Sort  (0) 2011.03.22
매크로 가드(Macro Guard)  (0) 2011.02.13
Hello world!  (0) 2011.02.07

2-Way Merge Sort

Language/C Language
void mergeSort(int numbers[], int temp[], int array_size)
{
  m_sort(numbers, temp, 0, array_size - 1);
}
 
 
void m_sort(int numbers[], int temp[], int left, int right)
{
  int mid;
 
  if (right > left)
  {
    mid = (right + left) / 2;
    m_sort(numbers, temp, left, mid);
    m_sort(numbers, temp, mid+1, right);
 
    merge(numbers, temp, left, mid+1, right);
  }
}
 
void merge(int numbers[], int temp[], int left, int mid, int right)
{
  int i, left_end, num_elements, tmp_pos;
 
  left_end = mid - 1;
  tmp_pos = left;
  num_elements = right - left + 1;
 
  while ((left <= left_end) && (mid <= right))
  {
    if (numbers[left] <= numbers[mid])
    {
      temp[tmp_pos] = numbers[left];
      tmp_pos = tmp_pos + 1;
      left = left +1;
    }
    else
    {
      temp[tmp_pos] = numbers[mid];
      tmp_pos = tmp_pos + 1;
      mid = mid + 1;
    }
  }
 
  while (left <= left_end)
  {
    temp[tmp_pos] = numbers[left];
    left = left + 1;
    tmp_pos = tmp_pos + 1;
  }
  while (mid <= right)
  {
    temp[tmp_pos] = numbers[mid];
    mid = mid + 1;
    tmp_pos = tmp_pos + 1;
  }
 
  for (i=0; i <= num_elements; i++)
  {
    numbers[right] = temp[right];
    right = right - 1;
  }
}

'Language > C Language' 카테고리의 다른 글

QuickSort  (0) 2011.03.23
매크로 가드(Macro Guard)  (0) 2011.02.13
Hello world!  (0) 2011.02.07

매크로 가드(Macro Guard)

Language/C Language


매크로 가드(Macro Guard)

#include 지시어 사용 시 발생할 수 있는 의도하지 않은 헤더 파일의 중복 포함 문제를 해결하기 위해 만들어진 구조


참조 : 위키피디아 (http://en.wikipedia.org/wiki/Include_guard)


Here, the file "child.c" has indirectly included two copies of the text in the header file "grandfather.h". This causes a compilation error, since the structure type foo is apparently defined twice. In C++, this would be a violation of the One Definition Rule.

"child.c" 에서 간접적으로 "grandfather.h" 헤더파일을 두번 포함시킨다. foo가 두번 정의되기 때문에, 이것이 컴파일 에러를 일으킨다.

따라서 아래와 같이 매크로 가드를 이용한다.


Here, the first inclusion of "grandfather.h" causes the macro GRANDFATHER_H to be defined. Then, when "child.c" includes "grandfather.h" the second time, the #ifndef test fails, and the preprocessor skips down to the #endif, thus avoiding the second definition of struct foo. The program compiles correctly.

GRANDFATHER_H로 매크로를 정의했다. 그러면 "child.c"가 "grandfather.h"헤더파일을 2번 포함할 때 #ifndef가 실패되고 전처리기가 #endif 부분으로 바로 내려가도록 처리하게 됨으로써 컴파일이 올바르게 된다.

'Language > C Language' 카테고리의 다른 글

QuickSort  (0) 2011.03.23
2-Way Merge Sort  (0) 2011.03.22
Hello world!  (0) 2011.02.07

Hello world!

Language/C Language
 
#include <stdio.h> 
  
           int main() 
{ 
printf("hello, world\n"); 
  return 0; 
} 

Testing syntax highlighter 3.x

'Language > C Language' 카테고리의 다른 글

QuickSort  (0) 2011.03.23
2-Way Merge Sort  (0) 2011.03.22
매크로 가드(Macro Guard)  (0) 2011.02.13