컴퓨터 프로그래밍 공부/자료구조와 알고리즘

선택 정렬 구현

뽀또치즈맛 2024. 4. 18. 20:44
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <list>
#include <stack>
#include <algorithm>
#include <cassert>


using namespace std;

bool CheckeSorted(int arr[], int size)
{
	if (arr[0] <= arr[1] && arr[1] <= arr[2])
		return true;

	else
		return false;
}

void Sorted(int arr[], int* size)
{
	if (!(arr[0] <= arr[1] && arr[1] <= arr[2]))
	{
		if (arr[0] > arr[1])
			swap(arr[0], arr[1]);
		if (arr[1] > arr[2])
			swap(arr[1], arr[2]);
		if (arr[0] > arr[1])
			swap(arr[0], arr[1]);

	}
}

void Print(int arr[], int size)
{
	for (int i = 0; i < size; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	// 3개 정렬
	{
		//for (int k = 0; k < 3; k++)
		//{
		//	for (int j = 0; j < 3; j++)
		//	{
		//		for (int i = 0; i < 3; i++)
		//		{
		//			int arr[3] = { i,j,k };
		//			int size = sizeof(arr) / sizeof(arr[0]);

		//			for (int e = 0; e < size; e++)
		//			{
		//				cout << arr[e] << " " << flush;
		//			}

		//			cout << " - > " << flush;

		//			// 정렬 함수 구현하기
		//			Sorted(arr, &size);

		//			for (int e = 0; e < size; e++)
		//			{
		//				cout << arr[e] << " " << flush;
		//			}

		//			cout << boolalpha;
		//			cout << CheckeSorted(arr, size);
		//			cout << endl;
		//		}
		//	}
		//}
	}

	// 5개 라면
	{

	}

	// 가장 작은 수 찾기
	{
		/*int arr[] = { 8,3,2,5,1,1,2,5,8,9 };
		int size = sizeof(arr) / sizeof(arr[0]);

		assert(size > 0);

		int Min = 0, MinIndex = 0;
		for (int i = 0; i < size; i++)
		{
			if (arr[i] < arr[MinIndex])
			{
				Min = arr[i];
				MinIndex = i;
			}
		}
		
		cout << Min << " " << MinIndex;*/



 	}

	// Selection Sort
	{
		int arr[] = { 8, 3, 2, 5 };
		int size = sizeof(arr) / sizeof(arr[0]);

		int min_index;
		for (int i = 0; i < size - 1; i++)
		{
			// 구현

			min_index = i;
			for (int j = i + 1; j < size; j++)
			{
				if (arr[j] < arr[min_index])
					min_index = j;

				Print(arr, size);
			}
			
			swap(arr[i], arr[min_index]);


			cout << boolalpha;
			cout << CheckeSorted(arr, size);
			cout << endl;
		}

		Print(arr, size);
	}



	return 0;
}

'컴퓨터 프로그래밍 공부 > 자료구조와 알고리즘' 카테고리의 다른 글

Tree  (0) 2024.04.28
삽입 정렬 구현  (0) 2024.04.21
원형 리스트  (0) 2024.04.17
연결 리스트(Linked List)  (0) 2024.03.14
리스트 List(배열 기반)  (0) 2024.02.06