문제풀이/Sorting 12

[JAVA] 백준 2751번 수 정렬하기2 : 병합 정렬( Merger Sort )

2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 문제 추상화 주어진 수의 나열을 시간복잡도 O(NlogN) 이상의 알고리즘으로 오름차순 정렬하라. 2. 알고리즘 O(NlogN) 시간복잡도는 정렬을 두 구간으로 분할정복할 때의 시간복잡도이다. N개의 수를 N번 비교하면 O(N2) ( 버블정렬 ) N개의 수를 분할한 수만큼 비교하면 O(NlogN) ( 퀵정렬, 병합정렬 ) 퀵정렬은 최악의 경우 O(N2)의 시간복잡도를 가진다. 테스트케이스 중 퀵정렬 저격용 최악의 경우도 있기 때문에 웬만하면 병합..

[JAVA] 백준 2750번 수 정렬하기1 : 버블 정렬 (Bubble Sort)

2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 문제 추상화 N개의 수가 주어졌을 때, 오름차순으로 정렬하시오. 2. 알고리즘 ( 아래 포스팅에 정리해두었으니 참고바랍니다. ) [ JAVA ] 버블정렬 향상 시키기 버블정렬은 가장 쉽고 이해하기 쉬운 정렬이다. 그러나 시간복잡도가 O(n2)이어서 효율이 좋지 않다. 그러니 일반적인 버블정렬과 버블정렬의 효율을 높이는 방법 두 가지를 소개하겠다. 7개의 lordofkangs.tistory.com 3. 코드 구현 3-1) 버블정렬 코드 //..