반응형
소스 코드
//http://ehpub.co.kr
//[언제나 C언어] 순차 정렬(Sequential Sort) [예제 Center]
#pragma warning(disable:4996)
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define LENGTH(arr) (sizeof(arr)/sizeof(arr[0]))
#define SWAP(i, j) {int t; t=i; i=j; j=t;}
#include <Windows.h>//Sleep
enum Color
{
LACK, BLUE, GREEN, JADE, RED, PURPLE, YELLOW, WHITE, GRAY,
LIGHT_BLUE, LIGHT_GREEN, LIGHT_JADE, LIGHT_RED, LIGHT_PURPLE, LIGHT_YELLOW, LIGHT_WHITE
};
void gotoxy(int x, int y)
{
COORD Pos = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void changecolor(int color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
void ViewArr2(int *base, int i,int j, int n, int r)
{
int s = 0;
for (s = 0; s < n; s++)
{
if (s < i)
{
changecolor(PURPLE);
}
else if (s == i)
{
changecolor(RED);
}
else if (s < j)
{
changecolor(WHITE);
}
else if (s == j)
{
changecolor(GREEN);
}
else
{
changecolor(WHITE);
}
printf("%2d ", base[s]);
}
changecolor(WHITE);
if (r)
{
printf(" SWAP %d %d", base[i], base[j]);
}
printf("\n");
}
void SequenceSort2(int *base, int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (base[i] > base[j])
{
ViewArr2(base, i, j, n, 1);
SWAP(base[i], base[j]);
}
ViewArr2(base, i, j, n, 0);
Sleep(1000);
}
}
}
void ViewArr(int *base, int n, const char *msg)
{
int i = 0;
for (i = 0; i < n; i++)
{
printf("%2d ", base[i]);
}
puts(msg);
}
void SequenceSort(int *base, int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (base[i] > base[j])
{
SWAP(base[i], base[j]);
}
}
}
}
int main(void)
{
int arr[10] = { 9,4,3,0,5,8,7,6,2,1 };
ViewArr(arr, LENGTH(arr), "before");
getch();
SequenceSort2(arr, LENGTH(arr));
ViewArr(arr, LENGTH(arr), "after");
system("pause");
return 0;
}
반응형
'C언어 > C언어 예제' 카테고리의 다른 글
디지털 시계 만들기 (0) | 2020.06.04 |
---|---|
float 4바이트 실수 형식 메모리에 표현 방식을 확인할 수 있는 C 소스 코드 작성하기 (0) | 2020.04.22 |
10진수를 2진수로 변환, 1의 개수 구하기, 반복문, 나누기, 나머지 연산 사용 불가 (0) | 2020.04.12 |
[C언어 소스] 문자열의 뒤쪽 공백 문자를 제거 (0) | 2016.11.27 |
[C언어 소스] 문자열의 앞쪽 공백 문자를 제거 (0) | 2016.11.27 |