숫자를 정렬하자 (D2)
문제 링크
- 숫자를 정렬하는 문제
- Arrays.sort()를 사용해도 되지만
- 버블정렬, 선택정렬, 삽입정렬을 구현해 보았다.
버블정렬
for (int i = list.length-1 ; i>0; i--) {
for (int j = 0; j < i; j++) {
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
선택정렬
for (int i = 0; i < list.length - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < list.length; j++) {
if (list[minIdx] > list[j]) {
minIdx = j;
}
}
int temp = list[i];
list[i] = list[minIdx];
list[minIdx] = temp;
}
삽입정렬
for(int i=1; i<list.length; i++) {
int key = list[i];
int j;
for (j=i-1; j>=0 && key<list[j]; j--) {
list[j+1] = list[j];
}
list[j+1] = key;
}
Solution
package swea;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class p1966 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
int T = Integer.parseInt(br.readLine());
for (int t = 1; t <= T; t++) {
int[] list = new int[Integer.parseInt(br.readLine())];
stk = new StringTokenizer(br.readLine(), " ");
int idx = 0;
while (stk.hasMoreTokens()) {
list[idx++] = Integer.parseInt(stk.nextToken());
}
for (int i = list.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
for (int i = 0; i < list.length - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < list.length; j++) {
if (list[minIdx] > list[j]) {
minIdx = j;
}
}
int temp = list[i];
list[i] = list[minIdx];
list[minIdx] = temp;
}
for (int i = 1; i < list.length; i++) {
int key = list[i];
int j;
for (j = i - 1; j >= 0 && key < list[j]; j--) {
list[j + 1] = list[j];
}
list[j + 1] = key;
}
System.out.print("#" + t);
for (int n : list) {
System.out.print(" " + n);
}
System.out.println();
}
}
}