2750๋ฒ: ์ ์ ๋ ฌํ๊ธฐ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 โค N โค 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ ์ ๋๊ฐ์ด 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ์๋ ์ค๋ณต๋์ง ์๋๋ค.
www.acmicpc.net
๋ฌธ์
N๊ฐ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 โค N โค 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ ์ ๋๊ฐ์ด 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ์๋ ์ค๋ณต๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
5 5 2 3 4 1
์์ ์ถ๋ ฅ
1 2 3 4 5
ํ์ด
์๊ฐ๋ณต์ก๋๊ฐ O(n^2)์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๋ผ๊ณ ๋ช ์
import java.util.Scanner;
public class B2750 {
โ
โstatic void swap(int[] a, int idx1, int idx2) {
โโint t = a[idx1];
โโa[idx1] = a[idx2];
โโa[idx2] = t;
โ}
โ
โstatic void bubbleSort(int[] a, int n) {
โโfor(int i = 0; i < n-1; i++) {
โโโfor(int j = 0; j < n-i-1; j++) {
โโโโif(a[j] > a[j+1]) {
โโโโโswap(a, j, j+1);
โโโโ}
โโโ}
โโ}
โ}
โ
โstatic void selectionSort(int[] a, int n) {
โโfor(int i = 0; i < n-1; i++) {
โโโint min = i;
โโโfor(int j = i+1; j < n; j++) {
โโโโif(a[j] < a[min]) {
โโโโโmin = j;
โโโโ}
โโโ}
โโโswap(a, i, min);
โโ}
โ}
โ
โstatic void insertionSort(int[] a, int n) {
โโfor(int i = 1; i < n; i++) {
โโโint j;
โโโint tmp = a[i];
โโโfor(j = i; j > 0 && a[j-1] > tmp; j--) {
โโโโa[j] = a[j-1];
โโโ}
โโโa[j] = tmp;
โโ}
โ}
โ
โpublic static void main(String[] args) {
โโScanner sc = new Scanner(System.in);
โโ
โโint n = sc.nextInt();
โโint[] sort = new int[n];
โโ
โโfor(int i = 0; i < n; i++) {
โโโsort[i] = sc.nextInt();
โโ}
โโ
โโbubbleSort(sort, n); // ๋ฒ๋ธ ์ ๋ ฌ
โโ//selectionSort(sort, n); // ์ ํ ์ ๋ ฌ
โโ//insertionSort(sort, n); // ์ฝ์
์ ๋ ฌ
โโ
โโfor(int i = 0; i < n; i++) {
โโโSystem.out.println(sort[i]);
โโ}
โ}
}