반응형
삽입 정렬 시간복잡도
Best | Avg | Worst |
n | n^2 | n^2 |
자바로 삽입정렬을 구현한 코드입니다.
/**
* 전제 조건: x[0 ~ i -1] 까지 정렬되어 있고 i는 x의 크기 보다 작다.
* x[i]가 x[0 ~ i -1]사이 올바른 위치에 들어가게 해준다.
* @param x 배열
* @param i 올바른 위치를 찾아줄 원소의 인덱스
*/
public static void insert(int[] x, int i){
int temp, j =0;
temp = x[i];
for(j = i-1; j>=0 && temp<x[j]; j--){
x[j+1] = x[j];
}
x[j+1] = temp;
}
/**
* 배열 x를 정렬한다.
* @param x 배열
*/
public static void sort(int[] x){
for (int i = 1; i < x.length; i++){
insert(x, i);
}
}
코드 사용 예시
import java.util.Arrays;
public class Test{
public static void main(String[] args) {
int[] a = {5,1,2,3,4,8,6,9,4,5};
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
}
/**
* 전제 조건: x[0 ~ i -1] 까지 정렬되어 있고 i는 x의 크기 보다 작다.
* x[i]가 x[0 ~ i -1]사이 올바른 위치에 들어가게 해준다.
* @param x 배열
* @param i 올바른 위치를 찾아줄 원소의 인덱스
*/
public static void insert(int[] x, int i){
int temp, j =0;
temp = x[i];
for(j = i-1; j>=0 && temp<x[j]; j--){
x[j+1] = x[j];
}
x[j+1] = temp;
}
/**
* 배열 x를 정렬한다.
* @param x 배열
*/
public static void sort(int[] x){
for (int i = 1; i < x.length; i++){
insert(x, i);
}
}
}
결과
배열 a가 오름차순으로 잘 정리된 모습을 볼 수 있습니다.
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 거듭제곱 계산 프로그램 예제 (0) | 2021.06.29 |
---|---|
[Java] int 정수 변수 비트의 1의 개수 세기 / 예제, 원리 (0) | 2021.06.12 |
[Java] String vs StringBuilder 실행 시간 구하기/비교 (0) | 2021.05.05 |
[Java] 버튼을 누르면 창 전환하기 / 자바 GUI/Swing 예제 (1) | 2021.02.28 |
[Java] 종료 버튼 만들기 (버튼을 누르면 프로그램 종료) 예제 /GUI (0) | 2021.02.26 |
댓글