#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 30
#define M 9999
typedef struct tree{
int index;
int key;
}tree;
int result[100];
int runindex[100];
int index[4] ;
int n=0;
void winner(int a1[],int a2[], int a3[], int a4[])
{
tree tree[8];
int i=0;
for(i=0 ; i<4 ; i++)
index[i]++;
while(1)
{
for(i=4 ; i<5 ; i++)
{
if(index[i-4] > 25)
a1[index[i-4]] = M;
tree[i].key = a1[index[i-4]];
tree[i].index = i-3;
}
for(i=5 ; i<6 ; i++)
{
if(index[i-4] > 25)
a2[index[i-4]] = M;
tree[i].key = a2[index[i-4]];
tree[i].index = i-3;
}
for(i=6 ; i<7 ; i++)
{
if(index[i-4] > 25)
a3[index[i-4]] = M;
tree[i].key = a3[index[i-4]];
tree[i].index = i-3;
}
for(i=7 ; i<8 ; i++)
{
if(index[i-4] > 25)
a4[index[i-4]] = M;
tree[i].key = a4[index[i-4]];
tree[i].index = i-3;
}
for(i=7 ; i!=1 ; i-=2)
{
if(tree[i].key > tree[i-1].key)
{
tree[i/2].key = tree[i-1].key;
tree[i/2].index = tree[i-1].index;
}
else
{
tree[i/2].key = tree[i].key;
tree[i/2].index = tree[i].index;
}
}
if(tree[i].key == M)
break;
result[n] = tree[i].key;
runindex[n++] = tree[i].index;
switch(tree[i].index)
{
case 1 : index[0]++; break;
case 2 : index[1]++; break;
case 3 : index[2]++; break;
case 4 : index[3]++; break;
}
}
printf("\n");
printf("Result : \n");
for(i=1; i<=n ; i++)
{
printf("(%2d,%2d) ", result[i-1],runindex[i-1]);
if(i%10 == 0 )
printf("\n");
}
}
void print(int a[])
{
int i;
for(i=1 ; i<26; i++)
{
printf("%2d ", a[i]);
}
printf("\n");
}
void insert(int e, int a[], int i)
{
a[0] = e;
while(e < a[i])
{
a[i+1] = a[i];
i--;
}
a[i+1] = e;
}
void insertionsort(int a[], int n)
{
int j;
for(j=2 ; j<=n ; j++)
{
int temp = a[j] ;
insert(temp,a,j-1);
}
}
void main()
{
int a1[MAX], a2[MAX], a3[MAX], a4[MAX];
int i;
srand((unsigned) time(NULL));
for(i=1 ; i< 26 ; i++)
{
a1[i] = rand()%100;
a2[i] = rand()%100;
a3[i] = rand()%100;
a4[i] = rand()%100;
}
print(a1);
printf("\n");
print(a2);
printf("\n");
print(a3);
printf("\n");
print(a4);
printf("\n");
insertionsort(a1,25);
insertionsort(a2,25);
insertionsort(a3,25);
insertionsort(a4,25);
printf("정렬 후 배열 모습\n");
print(a1);
printf("\n");
print(a2);
printf("\n");
print(a3);
printf("\n");
print(a4);
printf("\n");
printf("winner tree\n");
winner(a1,a2,a3,a4);
printf("\n");
}
'IT' 카테고리의 다른 글
위너트리하고싶다 . c (0) | 2014.05.14 |
---|---|
뭔진 모르지만 그냥 정렬 (0) | 2014.05.14 |
HASH 3 // HASH 1이랑 뭐가 다른지 잘 모르겠음 (0) | 2014.05.14 |
HASH2 // 이것도 뭔가 이상한데 그냥 올림 (0) | 2014.05.14 |
HASH1 //뭔가 수정을 했는데, 수정한 파일은 남아있지않네 ;; (0) | 2014.05.14 |