...
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5
#define ESC 0x1b
void swap(int *x,int *y);
void bubble_sort(int *x);
void exchange_sort(int *x);
void select_sort(int *x);
void insert_sort(int *x);
int main(void)
{
int a[N]={3,4,5,6,1};
char hit;
int i,j;
do
{
printf("┌──────────────────┐\n");
printf("│ [ 다양한 방식의 정렬 모음 ] │\n");
printf("│ │\n");
printf("│ ※숫자 키를 눌러 선택하세요. │\n");
printf("│ │\n");
printf("│ 1번 - 버블 정렬 │\n");
printf("│ 2번 - 교환 정렬 │\n");
printf("│ 3번 - 선택 정렬 │\n");
printf("│ 4번 - 삽입 정렬 │\n");
printf("│ ESC - 끝내기 │\n");
printf("└──────────────────┘\n");
printf("\n 현재 배열 : ");
for(i=0;i<N;i++)
printf("%d ", a[i]);
hit = getch();
if(hit == '1')
{
system("cls");
puts(" *버블정렬*");
bubble_sort(a);
puts("\n\n\n계속하려면 아무키나 누르세요.");
getch();
system("cls");
}
else if(hit == '2')
{
system("cls");
puts(" *교환정렬*");
exchange_sort(a);
puts("\n\n\n계속하려면 아무키나 누르세요.");
getch();
system("cls");
}
else if(hit == '3')
{
system("cls");
puts(" *선택정렬*");
select_sort(a);
puts("\n\n\n계속하려면 아무키나 누르세요.");
getch();
system("cls");
}
else if(hit == '4')
{
system("cls");
puts(" *삽입정렬*");
insert_sort(a);
puts("\n\n\n계속하려면 아무키나 누르세요.");
getch();
system("cls");
}
else
{
system("cls");
continue;
}
}while(hit != ESC);
exit(0);
}
void swap(int *x,int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
void bubble_sort(int *x)
{
int i,j;
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(x[j]>x[j+1])
{
swap(&x[j],&x[j+1]);
}
}
}
printf("\n오름차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(x[j]<x[j+1])
{
swap(&x[j],&x[j+1]);
}
}
}
printf("\n내림차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
}
void exchange_sort(int *x)
{
int i,j;
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(x[i] > x[j])
{
swap(&x[i],&x[j]);
}
}
}
printf("\n오름차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(x[i] < x[j])
{
swap(&x[i],&x[j]);
}
}
}
printf("\n내림차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
}
void select_sort(int *x)
{
int i,j,index;;
for(i=0;i<N-1;i++)
{
index = i;
for(j=i+1;j<N;j++)
{
if(x[index] > x[j])
index = j;
}
swap(&x[index], &x[i]);
}
printf("\n오름차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
for(i=0;i<N-1;i++)
{
index = i;
for(j=i+1;j<N;j++)
{
if(x[index] < x[j])
index = j;
}
swap(&x[index], &x[i]);
}
printf("\n내림차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
}
void insert_sort(int *x)
{
int i,j,target;
for(i=0;i<N;i++)
{
target = x[i];
for(j=i-1;j>=0;j--)
{
if(target<x[j])
{
x[j+1]=x[j];
}
else
break;
}
x[j+1]=target;
}
printf("\n오름차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
for(i=0;i<N;i++)
{
target = x[i];
for(j=i-1;j>=0;j--)
{
if(target>x[j])
{
x[j+1]=x[j];
}
else
break;
}
x[j+1]=target;
}
printf("\n내림차순 정렬 : ");
for(i=0;i<N;i++)
printf("%d ", x[i]);
}
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.