Notice
Recent Posts
Recent Comments
Link
기린의 기록을 위한 공간
[C++] 삽입 정렬 (Insertion Sort) 본문
[삽입정렬]
각 숫자를 필요할때만 적당한 위치에 삽입하는 방법
[문제]
1,10,5,8,7,6,4,3,2,9 를 순서대로 정렬하세요
[풀이]
#include <stdio.h>
int main(void) {
int i, j, temp;
int array[10] = { 1,10,5,8,7,6,4,3,2,9 };
for (i = 0; i < 9; i++) {
j = i; //현재 정렬할 원소를 선택하여 적당한 위치에 넣어주기 위함
while (array[j] > array[j + 1]) { //왼쪽이 오른쪽보다 크면 위치를 바꿔줌
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
j--;
}
}
for (i = 0; i < 10; i++) {
printf("%d", array[i]);
}
}
[문제점]
선택정렬과 버블정렬보다는 효율적이다. 그 이유는 전체를 다 확인해볼 필요가 없고
1 5 7 8 10 6 4 3 2 9 에서 6을 적당한 위치에 넣어 줄 경우 7 8 10 3번만 확인후에 5 뒤에 넣어주면 되기떄문이다.
그렇지만 시간 복잡도 o(n*n)를 가진다는 점에서 비효율적인 알고리즘에 속한다.
'Algorithm > 기타' 카테고리의 다른 글
[C++]백준 14단계 2750번 : 수 정렬하기 (0) | 2020.02.03 |
---|---|
[C++] 퀵정렬 (Quick Sort) (0) | 2020.02.02 |
[C++] 버블정렬 (Bubble Sort) (0) | 2020.02.02 |
[C++] 선택정렬 (Selection Sort) (0) | 2020.02.02 |
[JAVA]프로그래머스[Hash] 1. 완주하지 못한 선수 (0) | 2020.02.02 |
Comments