C++/Function

내가 만든 함수.

gandus 2010. 4. 29. 18:09

소수를 구하는 함수.

에라스토스테네스의 체(Sieve of Erastosthenes) 의 알고리즘을 이용한,
소수를 구하는 함수이다.

 

void sieve_func(int s[], int size);

 void main ()

{

int i;

int sieve[100]={0};

 

for(i=2; i< 10; i++)

{

if(sieve[i] == 1) // 이미1이면다음으로넘어간다.

continue

sieve_func(sieve, i);; // 함수호출

} 

for(i=0; i< 100; i++)

if (sieve[i] == 0) // 소수이면출력시킨다.

cout<< i <<" "

cout<<endl;

}

void sieve_func(int s[], int size)

{

int i;

 

// i = size * 2를한이유는자기자신을지니는숫자는

// 소수이기에제외시킨다.

for(i = size * 2;i < 100; i += size) // 배수를나타내야하니size만큼증가시킴

s[i] = 1;

}



이진 검색 함수

이진검색 전에는 미리 asc 정렬이 필요하다.

1. 일단 로우 값 ~ 하이 값 의 중간값을 선택
2. 중간값이 34보다 작으면  다시 중간 값을 원래 중간 값 +1 로 재정의
3. 로우   - 하이가 값이 바뀌면 종료(탐색값이 없다.)

int binary_search(int list[], int n, int key)    // list[]는  오름차순 정렬된 정수배열, n은 배열의 사이즈
{                                                           //  Key는 찻고자 하는 숫자이다   
        int low, high, middle;                       //  찻고자 하는 수자 몇번째 원소인지 나타내준다.
        low = 0;
        high = n-1;
        while( low <= high ){       // 아직 숫자들이 남아있으면
                middle = (low + high)/2;    // 중간 요소 결정
                if( key == list[middle] )  // 일치하면 탐색 성공
                        return middle;
                else if( key > list[middle] )// 중간 원소보다 크다면
                        low = middle + 1;    // 새로운 값으로 low 설정
                else
                        high = middle - 1;   // 새로운 값으로 high 설정
        }  
        return -1;
}


선택정렬 (오름차순 , 내림차순)


void asc(int a[], int size)
{

 int i, j, temp=0;


 for (i=0; i< size -1; i++)
  for (j=i+1 ;  j< size ; j++)
   if ( a[i]  > a[j])   // 내림차순은  부등호만 반대로...
   {
    temp = a[i];
    a[i] = a[j];
    a[j] = temp;
   }
}


계속 추가예정......