https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
//버전01
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
int[] arr = new int[cnt];
for(int i = 0; i < cnt; i++){
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
StringBuilder stBuilder = new StringBuilder();
for(int index : arr){
stBuilder.append(index + "\n");
}
System.out.println(stBuilder);
}
}
//버전02 선택정렬로 구현
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
int[] arr = new int[cnt];
//입력
for(int i = 0; i < cnt; i++){
arr[i] = sc.nextInt();
}
//선택정렬
for(int i = 0; i < arr.length - 1; i++){
int min = i; //최소값
for(int j = i + 1; j < arr.length ; j++){
if(arr[j] < arr[min]){ //최소값과 비교
min = j;
}
}
int temp = arr[i];//swap
arr[i] = arr[min];
arr[min] = temp;
}
//출력
StringBuilder stb = new StringBuilder();
for(int item : arr){
stb.append(item + "\n");
}
System.out.println(stb);
}
}
//버전03 삽입정렬로 구현
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
int[] arr = new int[cnt];
//입력
for(int i = 0; i < cnt; i++){
arr[i] = sc.nextInt();
}
//삽입정렬
for(int x = 1; x < arr.length; x++){
for(int y = x; y > 0 ; y--){ //줄어들면서 앞쪽하고 비교
if(arr[y] < arr[y - 1]){ //앞쪽 값보다 작다면
int temp = arr[y]; //스왑
arr[y] = arr[y - 1];
arr[y - 1] = temp;
}else {
break;
}
}
}
//출력
StringBuilder stb = new StringBuilder();
for(int item : arr){
stb.append(item + "\n");
}
System.out.println(stb);
}
}
//버전04 버블정렬로 구현
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
int[] arr = new int[cnt];
//입력
for(int i = 0; i < cnt; i++){
arr[i] = sc.nextInt();
}
//버블정렬
/*
//인텔리제이에서는 문제가 없으나 제출 시 에러남
for(int i = 1; i < arr.length - 1; i++){
for(int j = 0; j < arr.length - i ; j++){
if(arr[j] > arr[j + 1]){
int temp = arr[j];//swap
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
*/
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]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
//출력
StringBuilder stb = new StringBuilder();
for(int item : arr){
stb.append(item + "\n");
}
System.out.println(stb);
}
}
'Study for Backend > Algorithm' 카테고리의 다른 글
[Algoritm 기초연습] 백준 1920 수 찾기 (0) | 2024.02.25 |
---|---|
[Algorithm 기초] 이진 탐색 (0) | 2024.02.24 |
[Algorithm 기초] 기수 정렬, 계수 정렬, 셀 정렬 (0) | 2024.02.22 |
[Algorithm기초] 합병 정렬, 힙 정렬, 퀵 정렬, 트리 정렬 (0) | 2024.02.20 |
[Algorithm기초] 버블 정렬, 삽입 정렬, 선택 정렬 (0) | 2024.02.19 |