[D2] 숫자를 정렬하자 - 1966
성능 요약
메모리: 20,956 KB, 시간: 147 ms, 코드길이: 714 Bytes
제출 일자
2023-10-17 21:06
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int[] input;
int T=sc.nextInt();
for(int tc = 1; tc <= T; tc++)
{
int N = sc.nextInt();
input = new int[N];
for(int i = 0; i < N; i++){
input[i] = sc.nextInt();
}
// Arrays.sort(input); -> 가장 기본
// bubbleSort(input); -> bubble sort
// selectionSort(input); -> select sort
insertionSort(input); -> insertion sort
System.out.print("#" + tc + " ");
printArray(input);
}
}
private static void insertionSort(int[] arr){
for(int i = 1; i < arr.length; i++){
int tmp = arr[i];
int j = i - 1;
while(j >= 0 && tmp < arr[j]){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = tmp;
}
}
private static void selectionSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
// 최소값을 가지는 idx
int minIdx = i;
// i + 1부터 끝까지 비교해서 최소값인 인덱스를 찾음
for(int j = i + 1; j < arr.length; j++){
if(arr[j] < arr[minIdx]){
minIdx = j;
}
}
swap(arr,i,minIdx);
}
}
private static void bubbleSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0; j < arr.length - 1 - i; j++){
if(arr[j] > arr[j+1]){
swap(arr,j,j+1);
}
}
}
}
private static void swap(int[] arr, int i, int j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
private static void printArray(int[] arr){
for(int num : arr){
System.out.print(num + " ");
}
System.out.println();
}
}
'알고리즘 - SWEA > D2' 카테고리의 다른 글
[SW expert Academy] SWEA 1959번 두 개의 숫자열 자바(Java) (0) | 2023.10.18 |
---|---|
[SW expert Academy] SWEA 1961번 숫자 배열 회전 자바(Java) (0) | 2023.10.18 |
[SW expert Academy] SWEA 1970번 쉬운 거스름돈 자바(Java) (1) | 2023.10.17 |
[SW expert Academy] SWEA 1974번 스도쿠 검증 자바(Java) (0) | 2023.10.17 |
[SW expert Academy] SWEA 1976번 시각 덧셈 자바(Java) (0) | 2023.10.17 |