#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define default 1000
#define root 1
typedef struct element
{
int key;
int run;
}element;
element *tree, list[4][26];
int treeSize = 4, listSize[4], treeNodeNum= treeSize << 1, listCounter[4], size = 26;
void createSelectionTree()
{
int i, j,k=0;
tree = (element*)malloc(sizeof(element)*(treeNodeNum));
srand((unsigned int) time (NULL));
for (i = 0; i < size; i++)
{
for (j = 0; j < treeSize; j++)
{
list[j][i].key = rand()%10;
list[j][i].run = j;
}
listCounter[i] = 0;
}
}
void push()
{
int i;
for (i = 0; i < treeSize; i++)
{
tree[treeSize + i].key = list[i][listCounter[i]].key;
}
}
element pop()
{
int parent = root, child = parent * 2;
while (child < treeNodeNum)
{
if (tree[parent].key == tree[child].key)
{
parent = child;
child = parent * 2;
}
else
{
parent = child + 1;
child = parent * 2;
}
}
listCounter[parent - treeSize]++;
return tree[root];
}
void adjustTree()
{
int child, parent;
for (parent = treeSize - 1; parent > 0; parent--)
{
child = parent * 2;
if (tree[child].key > tree[child + 1].key)
tree[parent].key = tree[child + 1].key;
else
tree[parent].key = tree[child].key;
}
}
void insert(element a, element arr[], int i)
{
arr[0] = a;
while(a.key < arr[i].key)
{
arr[i+1] = arr[i];
i--;
}
arr[i+1] = a;
}
void isort(element arr[], int n)
{
int j;
for(j=2; j <=n;j++)
{
element temp = arr[j];
insert(temp, arr, j-1);
}
}
void main()
{
element temp;
int i = 0, j = 0,count=0;
temp.key = 0;
printf("배열 1-4\n");
createSelectionTree();
for (i = 0; i < treeSize; i++)
{
printf("배열 %d : ", i+1);
for (j = 1; j < size; j++)
{
printf("%d ", list[i][j].key);
}
printf("\n");
}
printf("\n정렬 후...\n");
for (i = 0; i < treeSize; i++)
{
isort(list[i],size-1);
}
for (i = 0; i < treeSize; i++)
{
printf("배열 %d : ", i+1);
for (j = 1; j < size; j++)
{
printf("%d ", list[i][j].key);
}
printf("\n");
}
printf("위너트리하고싶다......\n");
do
{
push();
adjustTree();
temp = pop();
printf("%d ", temp.key);
printf("%d ", temp.run);
printf("\n");
count++;
} while (count != 4*26);
printf("\n");
}
'IT' 카테고리의 다른 글
힙소트 // 자세한 설명은 생략한다 (0) | 2014.05.14 |
---|---|
머지 소트 (0) | 2014.05.14 |
뭔진 모르지만 그냥 정렬 (0) | 2014.05.14 |
뭔진 모르겠지만 무슨 정렬 (0) | 2014.05.14 |
HASH 3 // HASH 1이랑 뭐가 다른지 잘 모르겠음 (0) | 2014.05.14 |