컴퓨터 공학

이진분할을 이용한 최대,최소값 구하기 알고리즘

혼새미로 2015. 11. 26. 19:15
반응형

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

 


#define N 100

 


int S[N];

 


void findMinMax(int low, int high, int& min, int& max)

{

 if (low > high) return;

 if (high - low == 1)

 {

  if (S[low] > S[high])

  {

   max = S[low];

   min = S[high];

  }

  else

  {

   max = S[high];

   min = S[low];

  }

 }

 else if (high == low)

 {

  min = max = S[low];

 }

 else

 {

  int mid,min1, min2, max1, max2;

  mid = (low + high) / 2;

  findMinMax(low, mid, min1, max1);

  findMinMax(mid + 1, high, min2, max2);

  if (min1 > min2)

   min = min2;

  else

   min = min1;

 


  if (max1 > max2)

   max = max1;

  else

   max = max2;

 }

}

 


void main()

{

 srand(time(NULL));

 for (int i = 0; i < N; i++)

 {

  S[i] = rand() % 10000+1;

  printf("%d ", S[i]);

 }

 printf("\n");

 int min, max;

 findMinMax(0, N - 1, min, max);

 printf("min:%d and max:%d\n", min, max);

}

처음 문제를 봤을때 어떻게 구해야할지 전혀 생각이 안나서 당황했습니다.

반응형

'컴퓨터 공학' 카테고리의 다른 글

알고리즘 시험문제1  (0) 2015.11.26
n개중 k개 선택 가능한 개수 구하기 알고리즘  (0) 2015.11.26
운영체제 5장  (0) 2015.11.26
운영체제 4장  (0) 2015.11.26
자막 만드는 방법(과거자료)  (0) 2015.11.26