C언어/C언어 예제

[C언어 소스] 순차 정렬 알고리즘 시뮬레이션(정렬 과정 시각화)

언제나휴일 2020. 4. 13. 15:01
반응형

 

실행 화면

소스 코드

//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언어 소스] 순차 정렬(Sequential Sort) 알고리즘 시뮬레이션 구현하기 – 언제나 휴일

이번 강의에서는 순차 정렬(Sequential Sort) 알고리즘을 수행했을 때 어떻게 진행하는지 시각화하여 인지할 수 있게 코드를 구현해 볼게요.  순차 정렬 알고리즘은 이미 소개를 하였기에 설명은 생략할게요. //http://ehpub.co.kr //[언제나 C언어] 순차 정렬(Sequential Sort) [예제 Center] #pragma warning(disable:4996) #include #include #include #define LENG

ehpub.co.kr

 

반응형