vidigummy KAU/2020년2학기알고리즘

알고리즘 기초 과제1

vidi 2021. 1. 3. 23:02

알고리즘은 정말 좋은 과목이다. 교수님도 좋고 과제도 몇 개 없고 이걸 찾아온 걸 봐서 당신 실력도 없다.

 

 

#include <iostream>
#include <vector>

using namespace std;

vector<int> BubbleSort(int len, vector<int> Arr);
vector<int> QuickSort(int len, vector<int> Arr);
vector<int> mixedsort(int len, vector<int> Arr);

int main()
{
	int n;
	cin >> n;
	vector<int> input;
	for (int i = 0; i < n; i++)
	{
		int tmp;
		cin >> tmp;
		input.push_back(tmp);
	}
	vector<int> ans = mixedsort(n, input);
	for (int i = 0; i < n; i++)
	{
		cout << ans[i] << " ";
	}
	return 0;
}

vector<int> mixedsort(int len,vector<int> Arr)
{
	if (len > 10)
	{
		return QuickSort(len, Arr);
	}
	else
	{
		return BubbleSort(len, Arr);		
	}
}

vector<int> QuickSort(int len,vector<int> Arr)
{
	vector<int> pivot;
	pivot.push_back(Arr[0]);
	vector<int> left;
	vector<int> right;
	vector<int> ans;
	for (int i = 1; i < len; i++)
	{
		int x = Arr[i];
		if (x < pivot[0])
		{
			left.push_back(x);
		}
		else
		{
			right.push_back(x);
		}
	}
	vector<int> Left = mixedsort(left.size(), left);
	vector<int> Right = mixedsort(right.size(), right);
	ans.insert(ans.end(), Left.begin(), Left.end());
	ans.insert(ans.end(), pivot.begin(), pivot.end());
	ans.insert(ans.end(), Right.begin(), Right.end());
	return ans;
}

vector<int> BubbleSort(int len, vector<int> Arr)
{
	for (int i = len-1; i > 0; i--)
	{
		for (int j = 0; j < i; j++)
		{
			if (Arr[j] > Arr[j + 1])
			{
				int tmp;
				tmp = Arr[j];
				Arr[j] = Arr[j + 1];
				Arr[j + 1] = tmp;
			}
		}
	}
	return Arr;
}

공부 좀 해라.

'vidigummy KAU > 2020년2학기알고리즘' 카테고리의 다른 글

알고리즘 과제 4  (0) 2021.01.03
알고리즘 과제 3  (0) 2021.01.03
알고리즘 과제 2  (0) 2021.01.03