728x90
- 자료구조
- 연결 리스트
- 이진 트리
- 스택
- 큐
- 해시
- 정렬
- 버블 정렬
- 선택 정렬
- 삽입 정렬
- 퀵 정렬
- 힙 정렬
- 알고리즘
- 재귀 함수
- 너비 우선탐색(BFS)
- 깊이 우선탐색(DFS)
- 다익스트라
삽입 정렬(Insertion Sort)
- 배열의 두번째 부터 끝까지 2~4을 반복한다.
- 선택된 값(Key)과 이전 배열들의 값을 비교한다.
- Key값이 작으면 한칸씩 오른쪽으로 쉬프트 해준다.
- Key값이 크면 다음 배열에 Key값을 넣어준다.
시간 복잡도 : O(n^2)
소스코드
#define __main
#ifdef __main
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10
void Init(int arr[]) {
srand(time(NULL));
for (int i = 0; i < MAX_SIZE; i++) {
// 임의의 정수 입력
arr[i] = rand() % 10000;
}
}
void Insertion_Sort(int arr[]) {
int key = 0;
int p = 0;
for (int i = 1; i < MAX_SIZE; i++) {
key = arr[i];
p = i;
for (int j = i - 1; j >= 0; j--) {
if (key < arr[j]) {
arr[j + 1] = arr[j];
p = j;
}
else break;
}
arr[p] = key;
}
}
void Print(int arr[]) {
for (int i = 0; i < MAX_SIZE; i++) {
printf("[%d] -> %d\n", i, arr[i]);
}
printf("\n--------------------\n\n");
}
int main() {
int arr[MAX_SIZE];
Init(arr);
Print(arr);
Insertion_Sort(arr);
Print(arr);
return 0;
}
#endif
'프로그래밍 > C언어' 카테고리의 다른 글
[정렬] 힙 정렬 (0) | 2020.11.17 |
---|---|
[정렬] 퀵 정렬 (0) | 2020.11.10 |
[정렬] 선택 정렬 (0) | 2020.11.06 |
[정렬] 버블 정렬 (0) | 2020.11.04 |
[자료구조] 해시 (0) | 2020.11.01 |