https://www.acmicpc.net/problem/2751
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
풀이 방법
내장 정렬 함수를 사용했기 때문에 크게 어렵지 않았다.
import java.io.*;
import java.util.Arrays;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
int[] array = new int[N];
for( int i = 0; i < N; i++)
{
array[i] = Integer.parseInt(bf.readLine());
}
//정렬
Arrays.sort(array);
for(int i = 0; i < array.length; i++)
bw.write(array[i]+"\n");
bw.flush();
}
}
느낀점
자료구조와 알고리즘의 사용 종류에 따라 시간과 비용이 달라진다.
속도와 메모리 효율을 높이려면 때에 따라 알맞은 자료구조와 알고리즘을 사용해야한다.
나는 정렬 방법 중 버블 정렬만을 알고 있었는데, 버블정렬은 구현이 매우 간단하지만 시간복잡도가 O( N² )이고 정렬 과정이 비효율적이다.
위와 같은 이유로 다른 정렬 방법을 공부하고자 한다.
분할 정렬과 힙 정렬을 공부하고, 공부한 방법을 이용해 본 문제를 풀어보겠다.