IT

인설션소트

kio467 2014. 6. 9. 11:15

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<limits.h>


#define MAX 100



typedef struct node{

int data,index;

}node;


node tree[8];

node result[MAX];



void print(int a[])

{

int i;

for(i=1; i<26; i++)

{

printf("%d\t", a[i]);


}

printf("\n\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,temp;

for(j=2; j<=n; j++){


temp= a[j];

insert(temp, a, j-1);

}

}


node compare(node a, node b)

{


if(a.data<=b.data)

return a;

else if(a.data>b.data)

return b;

else if(b.data ==NULL)

return a;

else if(a.data ==NULL)

return b;


}

void search(int a1[], int a2[], int a3[] , int a4[]){


int i=0,j;

int index1=1, index2=1, index3=1, index4=1;

while(i<101)

{

if(index1>25)

a1[index1]=INT_MAX;

tree[4].data=a1[index1];

tree[4].index=1;


if(index2>25)

a2[index2]=INT_MAX;

tree[5].data=a2[index2];

tree[5].index=2;

if(index3>25)

a3[index3]=INT_MAX;

tree[6].data=a3[index3];

tree[6].index=3;

if(index4>25)

a4[index4]=INT_MAX;

tree[7].data=a4[index4];

tree[7].index=4;


for(j=3; j>0; j--){

tree[j]=compare(tree[2*j], tree[2*j+1]);

}

result[i++]=tree[1];


switch(tree[1].index){

case 1: index1++; break;

case 2: index2++; break;

case 3: index3++; break;

case 4: index4++; break;

}


}


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

{

printf("%d,%d\t", result[i].data, result[i].index);

}


}



void main()

{

int a1[MAX], a2[MAX], a3[MAX], a4[MAX];

int i;


srand(time(NULL));

for(i=1; i<26; i++)

{


a1[i] =rand()%10000;

a2[i] =rand()%10000;

a3[i] =rand()%10000;

a4[i] =rand()%10000;

}

print(a1);

print(a2);

print(a3);

print(a4);

printf("\n");


printf("정렬후 출력\n");

insertionSort(a1, 25);

print(a1);


insertionSort(a2, 25);

print(a2);


insertionSort(a3, 25);

print(a3);


insertionSort(a4, 25);

print(a4);


search(a1,a2,a3,a4);


}