삽입정렬(Insertion sort)
이 알고리즘은 다른 알고리즘과 달리 스왑을 하는것이 아니라 temp에 n번째 값을 저장시켜 n-1번째 값이랑 temp를 비교시켜 n-1번째 값이 더 크다면 n번째에 n-1번째 값을 집어넣는 것이다.
n-1 값이 더 크다면 n번째 자리에 temp의 값을 집어 넣는다.
삽입정렬의 시간복잡도는 O(n²)이다.
예제소스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <stdio.h>
#define n 5
int main()
{
int temp;
int arr[n] = { 65,17,22,1,65 };
int i, j;
for (i = 1; i < n; i++) {
temp = arr[i];
//중간 과정을 출력
printf("\n\n%d회전 결과 : ", i-1);
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
//정렬
for (j = i; j > 0 && arr[j - 1] > temp; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
printf("\n\n[정렬 완료]%d회전 결과 : ",n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
|
cs |
'프로그래밍 > 알고리즘' 카테고리의 다른 글
선택 정렬(Selection sort)알고리즘 - c언어 예제 (0) | 2019.03.25 |
---|---|
버블정렬 알고리즘 (c언어 예제) (0) | 2019.03.18 |