반응형
import java.util.ArrayList;
public class Main {
private void swap(int[] arr, int idx1, int idx2) {
int tmp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = tmp;
}
// 삽입 정렬
private int[] sortByInsertionSort(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;
}
return arr;
}
// 선택정렬
private int[] sortBySelectionSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int minIdx = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
swap(arr, minIdx, i);
}
return arr;
}
// 버블정렬
private int[] sortByBubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1; j++) {
if(arr[j] > arr[j+1]){
swap(arr, j, j + 1);
}
}
}
return arr;
}
// 셸 정렬
private int[] sortByShellSort(int[] arr) {
for (int h = arr.length / 2; h > 0; h /= 2) {
for (int i = h; i < arr.length; i++) {
int tmp = arr[i];
int j = i - h;
while (j >= 0 && tmp < arr[j]) {
arr[j+h] = arr[j];
j = j - h;
}
arr[j + h] = tmp;
}
}
return arr;
}
public static void main(String[] args) {
int[] array = {5, 4, 1, 2, 3, 6, 8, 7, 9, 10};
Main T = new Main();
// 삽입정렬 N, N^2, N^2
System.out.print("삽입 정렬 : ");
for (int x : T.sortByInsertionSort(array)) {
System.out.print(x + " ");
}
// 선택정렬 N^2, N^2, N^2
System.out.print("\n" + "선택 정렬 : ");
for (int x : T.sortBySelectionSort(array)) {
System.out.print(x + " ");
}
// 버블 정렬 N^2, N^2, N^2
System.out.print("\n" + "버블 정렬 : ");
for (int x : T.sortByBubbleSort(array)) {
System.out.print(x + " ");
}
// 버블 정렬 N^2, N^2, N^2
System.out.print("\n" + "버블 정렬 : ");
for (int x : T.sortByBubbleSort(array)) {
System.out.print(x + " ");
}
// 셸 정렬 N, N^1.5, N^2
System.out.print("\n" + "셸 정렬 : ");
for (int x : T.sortByShellSort(array)) {
System.out.print(x + " ");
}
}
}
레퍼런스
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘 - Comparator] 오름차순 내림차순 (0) | 2024.08.12 |
---|---|
[알고리즘 - 백준] 11724번 연결 요소의 개수 JAVA (0) | 2024.08.09 |
[알고리즘 - 백준] 1260번 DFS와 BFS (0) | 2024.08.09 |
[LeetCode] - 49.Group Anagrams (0) | 2024.03.02 |
[ArrayList를 Array로 형 변환] - 코딩테스트 출력값이 안 맞을 때 (0) | 2024.02.03 |