728x90
문제
Arrays.sort()없이 sort하기.
insertion sort 방식 : 카드게임할 때, 패를 순차적으로 정리하는 느낌
I : 임의의 int [ ] arr (길이 1000이하)
O : 오름차순으로 정렬된 int [ ] output
public static void main(String[] args) {
int[] output = insertionSort(new int[]{3, 1, 21});
System.out.println(Arrays.toString(output));
}
나의 풀이
import java.util.Arrays;
public class insertionSort {
// 조건
public static void main(String[] args) {
int[] output = insertionSort(new int[]{3, 1, 21});
System.out.println(Arrays.toString(output));
}
// 코드 구현
public static int[] insertionSort(int[] arr) {
int[] output = new int[arr.length];
for( int i= 0 ; i<arr.length ; i++) {
int count= 0;
for (int j= 0 ; j<arr.length ; j++) {
if(arr[i]>arr[j]) count++;
}
output[count] = arr[i];
}
return output;
}
}
레퍼런스
import java.util.Arrays;
public class reference {
public static void main(String[] args) {
int[] output = insertionSort(new int[]{3, 1, 21});
System.out.println(Arrays.toString(output));
}
/*
최적화를 적용한 코드
: 이미 정렬된 숫자보다 큰 수를 비교하는 경우를 제거함으로써,
불필요한 처리과정을 최소화
*/
public static int[] insertionSort(int[] arr) {
for (int index = 1; index < arr.length; index++) {
int target = index;
while (target > 0 && arr[target - 1] > arr[target]) {
int temp = arr[target - 1];
arr[target - 1] = arr[target];
arr[target] = temp;
target--;
}
}
return arr;
}
}
깃 링크
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
| [Sort] radix sort (with counting sort) (0) | 2022.09.26 |
|---|---|
| [getItemFromTwoSortedArrays] 두 배열에서 K번째로 큰 수 구하기 (0) | 2022.09.23 |
| [JAVA] 최단경로로 걸리는 시간 구하기 (robotPath) (0) | 2022.09.16 |
| [JAVA] 순열 - 경우의 수 모두 구하기 (0) | 2022.09.11 |
| [JAVA] powerSet (멱집합) (0) | 2022.09.07 |