- 무조건 위치를 변경하는 선택 정렬, 버블 정렬과는 다르게 필요할 때에만 위치를 변경
- 시간복잡도는 선택 정렬, 버블 정렬과 같은 O(N^2)으로 비효율적
- 하지만, 데이터가 이미 정렬된 상태에 한해서는 어떤 알고리즘보다도 빠르다.
- 적절한 위치에 삽입하는 알고리즘
문제
- 다음 숫자들을 오름차순으로 정렬하시오.
- 1, 10, 6, 8, 4, 2, 3, 5, 9, 7
소스 코드
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[] = new int[10];
for(int k=0; k<arr.length; k++) {
arr[k] = sc.nextInt();
}
int i, j, temp;
for(i=0; i<9; i++) {
j=i;
while(j>0 && arr[j-1] > arr[j+1]) {
temp = arr[j-1];
arr[j-1] = arr[j+1];
arr[j+1] = temp;
j--;
}
}
for(i=0; i<10; i++) {
System.out.print(arr[i] + " ");
}
}
}
출력 결과
'5. 알고리즘 > 5_2 실전' 카테고리의 다른 글
[알고리즘] JAVA 힙 정렬 (Heap Sort) 알고리즘 (0) | 2020.02.16 |
---|---|
[알고리즘] JAVA 병합 정렬 (Merge Sort) 알고리즘 (0) | 2020.02.15 |
[알고리즘] JAVA 퀵 정렬 (Quick Sort) 알고리즘 (0) | 2020.02.15 |
[알고리즘] 버블 정렬 (Bubble Sort) 알고리즘 자바(Java) (0) | 2020.02.13 |
[알고리즘] JAVA 선택 정렬 (Select Sort) 알고리즘 (0) | 2020.02.13 |