본문 바로가기

Algorithm/문제풀이

[백준] 2750번: 수 정렬하기

문제링크https://www.acmicpc.net/problem/2750

 

문제풀이

삽입정렬, 거품정렬, 선택정렬 방식을 이용해 풀었다.

 

소스코드

/*
 * 백준 2750번: 수 정렬하기
 */

#include <iostream>

using namespace std;

void insertionSort(int* arr, int len);
void bubbleSort(int* arr, int len);
void selectionSort(int* arr, int len);

int main() {
	int N;
	cin >> N;

	int* arr = new int[N];
	for (int i = 0; i < N; i++) {
		cin >> arr[i];
	}

	selectionSort(arr, N);

	for (int i = 0; i < N; i++) {
		cout << arr[i] << endl;
	}

	delete[] arr;

	return 0;
}

void insertionSort(int* arr, int len) {
	for (int i = 1; i < len; i++) {
		int key = arr[i];

		int prev = i - 1;
		while (prev >= 0) {
			if (key < arr[prev]) {
				arr[prev + 1] = arr[prev];
				prev--;
			}
			else {
				break;
			}
		}

		if (prev + 1 != i) arr[prev + 1] = key;
	}
}

void bubbleSort(int* arr, int len) {
	for (int i = len - 1; i > 0; i--) {
		for (int j = 0; j < i; j++) {
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

void selectionSort(int* arr, int len) {
	for (int i = 0; i < len; i++) {
		int min = arr[i];
		int min_idx = i;
		for (int j = i + 1; j < len; j++) {
			if (arr[j] < min) {
				min = arr[j];
				min_idx = j;
			}
		}

		int temp = arr[i];
		arr[i] = min;
		arr[min_idx] = temp;
	}
}

'Algorithm > 문제풀이' 카테고리의 다른 글

[백준] 2108번: 통계학  (0) 2019.06.09
[백준] 10989번: 수 정렬하기3  (0) 2019.06.08
[백준] 6064번: 카잉 달력  (0) 2019.05.22
[백준] 1475번: 방 번호  (0) 2019.05.21
[백준] 1157번: 단어 공부  (0) 2019.05.21