선택정렬과 버블정렬로 각각 정렬하고 마지막에 2원병합정렬로 출력하는 방법?
잠팅이
질문 제목 : 선택정렬과 버블정렬로 각각 정렬하고 마지막에 2원병합정렬로 출력하는 방법a[10]은 선택정렬 b[10]은 버블정렬 c[10]은 2원병합정렬(or병합정렬)로 나타내서 출력하는 겁니다.질문 내용 :
자료구조 과제에요. 선택정렬과 버블정렬의 소스는 아는데 제가 2원병합정렬(병합정렬)의 소스를 몰라요..
c언어 배울 때 선택정렬하고 버블정렬 밖에 배우지 않았거든요..
어떤 식으로 하는 거냐면요
a[10]에 데이터를 넣고 정렬을 해요. 근데 이 정렬은 선택정렬로 하고요.
b[10]은 a[10]과 다른 데이터를 넣고 이번엔 버블정렬을 해요.
일단 여기까지 했어요. 이제 2원병합정렬 차례인데요..
c[20]을 잡고 a[10]에 있는 데이터와 b[10]에 있는 데이터를 c[20]에 넣고
그 다음에 2원병합정렬을 하는 거에요..
a[10], b[10], c[20]이 모두 완성된 sort로 출력돼야 해요~!
근데 2원병합정렬의 소스를 모르니까ㅜ 어떻게 해야할지 모르겠어요..
2원병합정렬 소스를 올려주시면 안될까요?
제가 지금까지 한 소스를 올릴게요!!
#include stdio.h
void main()
{
int i, tmp, j, ju,flag=2;
int a[10]={20,65,32,12,2,3,58,99,62,10};
int b[10]={77,7,52,36,91,35,69,11,88,21};
int c[20];
//선택정렬
for(j=0;j9;j++)
{
for(i=j+1;i10;i++)
{
if(a[j]a[i])
{
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}
//버블정렬
for(j=0;j9;j++)
{
for(i=0;i9-j;i++)
{
if(b[i]b[i+1])
{
tmp=b[i];
b[i]=b[i+1];
b[i+1]=tmp;
}
}
}
//c[i]에 합치기
for(i=0;i10;i++)
{
c[i]=a[i];
c[i+10]=b[i];
}
//merge sort
어떻게 넣어야 할지소스를 알려주시면 감사하겠어요ㅠ_ㅜ
//출력
printf(a:);
for(i=0;i10;i++)
{
printf(%d\t,a[i]);
}
printf(\nb:);
for(i=0;i10;i++)
{
printf(%d\t,b[i]);
}
printf(\nc:);
for(i=0;i20;i++)
{
printf(%d\t,c[i]);
}
}