티스토리 뷰
Advanced 정렬하기
문제
서로 다른 n개의 정수가 주어질 때, 이를 1초안에 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫 번째 줄에 n이 주어진다. ( 1 ≤ n ≤ 100,000 ) 두번째 줄에 n개의 정수가 주어진다.
출력
첫 번째 줄에 n개의 숫자를 합병정렬을 이용하여 오름차순으로 정렬한 결과를 출력한다.
예제 입력
10
2 5 3 4 8 7 -1 9 10 2
예제 출력
-1 2 2 3 4 5 7 8 9 10
코드
//merge sort
import java.util.*;
public class Main {
public static ArrayList<Integer> box = new ArrayList<>();
public static int[] sorted;
//첫 번째 줄에 n이 주어진다. ( 1 ≤ n ≤ 100,000 ) 두번째 줄에 n개의 정수가 주어진다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//총 몇개의 숫자를 입력 받을 것인지
int a;
int[] b;
int c;
int d = 0;
a = sc.nextInt();
b = new int[a];
sorted = new int[a];
for (int i = 0; i < a; i++) {
b[i] = sc.nextInt();
}
mergeSort(b, 0, a - 1);
sc.close();
for (int i = 0; i < a; i++) {
System.out.print(sorted[i] + " ");
}
}
public static void mergeSort(int[] arr, int m, int n) {
int middle;
if (m < n) {
middle = (m + n) / 2;
mergeSort(arr, m, middle);
mergeSort(arr, middle + 1, n);
merge(arr, m, middle, n);
}
}
public static void merge(int[] arr, int m, int middle, int n) {
int i, j, k, t;
i = m;
j = middle + 1;
k = m;
while (i <= middle && j <= n) {
if (arr[i] <= arr[j])
sorted[k] = arr[i++];
else
sorted[k] = arr[j++];
k++;
}
if (i > middle) {
for (t = j; t <= n; t++, k++)
sorted[k] = arr[t];
} else {
for (t = i; t <= middle; t++, k++)
sorted[k] = arr[t];
}
for (t = m; t <= n; t++)
arr[t] = sorted[t];
}
}
'알고리즘 문제 풀이 ' 카테고리의 다른 글
히스토그램 (0) | 2018.10.03 |
---|---|
달팽이는 올라가고 싶다 (0) | 2018.10.01 |
탑 (0) | 2018.10.01 |
괄호의값 (0) | 2018.10.01 |
괄호 / 스택 (0) | 2018.10.01 |
원형큐 구현하기 (0) | 2018.10.01 |
선형큐 구현하기 (0) | 2018.10.01 |
스택구현하기 (0) | 2018.10.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 한글 자동 완성
- javascript #백준 #회의실배정 #알고리즘
- java #알고리즘 #백준 #퇴사
- java #하노이 #알고리즘 #백준
- 1992번
- java #오르막수 #백준 #알고리즘
- 알고리즘
- Javascript
- java #백준 #알고리즘 #로또 #6603
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
- Game
- javascript #백준 #알고리즘 #LCS
- 백준
- npm
- java #알고리즘 #백준
- TypeScript
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- java #백준 #알고리즘 #2805 #나무자르기
- 색종이자르기
- 백준 #java #알고리즘
- 2630번
- webpack
- react
- 쿼드트리
- webspider
- Terminal
- java #퀵소트 #quicksort #알고리즘 #백준
- java #알고리즘 #백준 #패션왕신해빈
- javascript #연속합 #알고리즘 #백준
- java #알고리즘 #백준 #N과M #백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함