삽입정렬(insertion sort)
선택한 요소를 더 앞쪽의 알맞은 위치에 삽입하는 작업을 반복하여 정렬하는 알고리즘
1. 변수 tmp에 a[i]를 대입 (a[i]는 정렬하지 않은 부분의 첫번째 요소)
2. 변수 j에 i-1대입 후 2개의 조건 중 하나를 만족할 때까지 j를 감소
- 정렬된 열의 왼쪽 끝에 도달
- tmp보다 작은 key를 같는 a[j]를 발견
import java.util.Scanner;
class InsertionSort {
static void insertionSort(int[] a, int n) {
for(int i=1; i<n; i++){
int j;
int tmp = a[i];
for(j=i; j>0 && a[j-1]>tmp; j--)
a[j] = a[j-1]
a[j] = tmp;
}
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
print("n의 개수: ")
int num = scan.nextInt();
int[] x = new int[num];
for(int i=0; i<num; i++){
print("x["+i+"] :");
x[i] = scan.nextInt();
}
insertionSort(x, num)
for(int i=0; i<num; i++){
print("x["+i+"] = "+ x[i]);
}
}
}
'Algorithm > Problem Solving' 카테고리의 다른 글
알고리즘 과제 저장2 (0) | 2021.11.10 |
---|---|
알고리즘 과제 저장1 (0) | 2021.11.10 |
[Python] SWEA 2019번 : 더블더블 (0) | 2021.08.18 |
[Python] SWEA 2050번 : 알파벳을 숫자로 변환 (0) | 2021.08.18 |
[Python] SWEA 2063번 : 중간값 찾기 (0) | 2021.08.18 |
댓글