반응형
선택 정렬
import java.util.*;
class Main {
public int[] solution(int n, int[] arr){
for(int i=0; i<n-1; i++){
int idx=i;
for(int j=i+1; j<n; j++){
if(arr[j]<arr[idx]) idx=j;
}
int tmp=arr[i];
arr[i]=arr[idx];
arr[idx]=tmp;
}
return arr;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++) arr[i]=kb.nextInt();
for(int x : T.solution(n, arr)) System.out.print(x+" ");
}
}
버블 정렬
import java.util.*;
class Main {
public int[] solution(int n, int[] arr){
for(int i=0; i<n-1; i++){
for(int j=0; j<n-i-1; j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
return arr;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++) arr[i]=kb.nextInt();
for(int x : T.solution(n, arr)) System.out.print(x+" ");
}
}
삽입 정렬
import java.util.*;
class Main {
public int[] solution(int n, int[] arr){
for(int i=1; i<n; i++){
int tmp=arr[i], j;
for(j=i-1; j>=0; j--){
if(arr[j]>tmp) arr[j+1]=arr[j];
else break;
}
arr[j+1]=tmp;
}
return arr;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++) arr[i]=kb.nextInt();
for(int x : T.solution(n, arr)) System.out.print(x+" ");
}
}
좌표 정렬
import java.util.*;
class Point implements Comparable<Point>{ // 포인트 클래스 객체를 정렬
public int x, y;
Point(int x, int y){
this.x = x;
this.y = y;
}
// ------> 정렬
//this 0
@Override
public int compareTo(Point o){
if(this.x == o.x) return this.y - o.y; // 오름차순
else return this.x - o.x; // 오름차순
}
}
class Main {
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
ArrayList<Point> arr=new ArrayList<>();
for(int i=0; i<n; i++){
int x=kb.nextInt();
int y=kb.nextInt();
arr.add(new Point(x, y));
}
Collections.sort(arr); // Comparable 인터페이스 통해서 Point 객체 정렬
for(Point o : arr) System.out.println(o.x+" "+o.y);
}
}
반응형
'CS 기초 > 알고리즘 · 문제풀이' 카테고리의 다른 글
Dynamic Programming(동적계획법) - 계단오르기 (0) | 2022.03.20 |
---|---|
Greedy Algorithm - 씨름 선수 (0) | 2022.03.20 |
Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] - 최대 매출 (Sliding Window) (0) | 2022.03.19 |
Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] - 두 배열 합치기 / 공통원소 구하기 (0) | 2022.03.18 |
Stack, Queue(자료구조) - 올바른 괄호 / 괄호문자제거 (0) | 2022.03.17 |