목차
선택정렬 (selecttion sort)
· 소스
· 실행화면
합병정렬 (merge sort)
· 소스
· 실행화면
· 소스
· 실행화면
합병정렬 (merge sort)
· 소스
· 실행화면
본문내용
#include
#include
void merge(int initList[], int mergedList[], int i, int m, int n)
{
int j,k,t;
j=m+1;
k=i;
while(i<=m && j<=n)
{
if(initList[i]<=initList[j])
mergedList[k++] = initList[i++];
else
mergedList[k++] = initList[j++];
}
if(i>m)
for(t=j; t<=n; t++)
mergedList[t] = initList[t];
else
for(t=i; t<=m; t++)
mergedList[k+t-i] = initList[t];
}
void mergePass(int A[], int ExtraArray[],int ArrayLength,int s)
{
int i,j;
for(i=0; i<=ArrayLength-2*s+1; i += 2*s)
merge(A, ExtraArray, i,i+s-1,i+2*s-1);
if(i+s-1
merge(A,ExtraArray,i,i+s-1,ArrayLength);
else
for(j=i; j<=ArrayLength; j++)
ExtraArray[j]=A[j];
for(i=0; i<10; i++)
{
printf("%d ",A[i]);
}
printf("\n\n");
}
void mergeSort(int A[], int ArrayLength)
{
int i, j=0;
int s = 1;
int ExtraArray[11];
printf("------------------합병 정렬 중 ------------------ \n\n");
while(s
{
printf("%d스텝 = ",++j );
mergePass(A,ExtraArray,ArrayLength,s);
s*=2;
printf("%d스텝 = ",++j);
mergePass(ExtraArray,A,ArrayLength,s);
s*=2;//s 에 곱하기 2
}
printf("------------------합병 정렬 후 ------------------ \n\n");
printf("총스텝 = %d\n\n",j);
printf("정렬완료 = ");
for(i=0; i<10; i++)
{
printf("%d ",A[i]);
}
printf("\n\n");
}
int main(void)
{
int Array[10];
srand(time(NULL));
int i;
for(i=0; i<10; i++)
{
Array[i]=rand()%10000;
}
printf("------------------합병 정렬 전 ------------------ \n\n");
printf("배열원본 = ");
for(i=0; i<10; i++)
{
printf("%d ",Array[i]);
}
printf("\n\n");
mergeSort(Array,10);
return 0;
}
· 실행화면
#include
void merge(int initList[], int mergedList[], int i, int m, int n)
{
int j,k,t;
j=m+1;
k=i;
while(i<=m && j<=n)
{
if(initList[i]<=initList[j])
mergedList[k++] = initList[i++];
else
mergedList[k++] = initList[j++];
}
if(i>m)
for(t=j; t<=n; t++)
mergedList[t] = initList[t];
else
for(t=i; t<=m; t++)
mergedList[k+t-i] = initList[t];
}
void mergePass(int A[], int ExtraArray[],int ArrayLength,int s)
{
int i,j;
for(i=0; i<=ArrayLength-2*s+1; i += 2*s)
merge(A, ExtraArray, i,i+s-1,i+2*s-1);
if(i+s-1
else
for(j=i; j<=ArrayLength; j++)
ExtraArray[j]=A[j];
for(i=0; i<10; i++)
{
printf("%d ",A[i]);
}
printf("\n\n");
}
void mergeSort(int A[], int ArrayLength)
{
int i, j=0;
int s = 1;
int ExtraArray[11];
printf("------------------합병 정렬 중 ------------------ \n\n");
while(s
printf("%d스텝 = ",++j );
mergePass(A,ExtraArray,ArrayLength,s);
s*=2;
printf("%d스텝 = ",++j);
mergePass(ExtraArray,A,ArrayLength,s);
s*=2;//s 에 곱하기 2
}
printf("------------------합병 정렬 후 ------------------ \n\n");
printf("총스텝 = %d\n\n",j);
printf("정렬완료 = ");
for(i=0; i<10; i++)
{
printf("%d ",A[i]);
}
printf("\n\n");
}
int main(void)
{
int Array[10];
srand(time(NULL));
int i;
for(i=0; i<10; i++)
{
Array[i]=rand()%10000;
}
printf("------------------합병 정렬 전 ------------------ \n\n");
printf("배열원본 = ");
for(i=0; i<10; i++)
{
printf("%d ",Array[i]);
}
printf("\n\n");
mergeSort(Array,10);
return 0;
}
· 실행화면
소개글