728x90
반응형
3. 삽입 정렬(Insertion Sort)
가장 간단하고 쉬운 정렬 방식이라고 볼 수 있다.
배열을 처음부터 하나하나 비교하여 자신한테 맞는 자리를 찾아가는 정렬 방식이다.
(1번째 값을 기준으로 하기 때문에 배열의 2번째 값에서부터 정렬을 시작한다.)
삽입 정렬의 특징
- 구현이 간단하지만 배열의 길이 만큼 비교하기 때문에 배열이 길어질수록 효율이 떨어진다.
- Insertion Sort 는 stable 한 정렬이다.
- Insertion Sort 는 in-place 한 정렬이다.
- Insertion Sort 는 comparison 한 정렬이다.
#include <stdio.h>
void insertion_sort(int * array, int max_size)
{
int size = max_size;
int i, j, remember;
printf("before : \n");
for(i=0;i<size;i++)
{
printf("%2d ", array[i]);
}
printf("\n");
for(i=1;i<size;i++)
{
remember = array[(j=i)];
while(--j >= 0 && remember < array[j])
{
array[j+1] = array[j];
array[j] = remember;
}
}
printf("after : \n");
for(i=0;i<size;i++)
{
printf("%2d ", array[i]);
}
printf("\n");
}
int main(void)
{
int num[] = {10,1,3,7,5,6,9,8,2,4};
insertion_sort(num, (sizeof(num)/sizeof(int)));
return 0;
}
* Note
Stable sort이란?
=> 같은 값이 2개 이상 존재하는 리스트를 정렬할 시 Stable sort는 같은 값도 순서대로 정렬될 수 있는 방법이다.
int list[] = {5, 2, 4(첫번째), 1, 4(두번째)};
=> 정렬을 진행하면아래 와 같이 정렬되는 것을 의미함
int list[] = {1, 2, 4(첫번째), 4(두번째), 5};
in-Place이란?
추가적인 메모리가 필요 없는 알고리즘을 뜻합니다.
10개의 list가 있다면 10개의 list에 해당하는 메모리만 사용하고 추가적인 메모리 할당이 필요 없음을 뜻합니다.
Comparison이란?
값을 비교하는 정렬 알고리즘을 의미합니다.
반응형
'Computer Science > Sorting Algorithm' 카테고리의 다른 글
[컴퓨터 과학] - 알고리즘의 기초 정렬 방법 분석하기(Sorting Algorithm) (0) | 2021.04.06 |
---|---|
2.정렬 알고리즘 - 칵테일 정렬 (0) | 2017.11.08 |
1. 정렬 알고리즘 - 버블 정렬 (0) | 2017.10.24 |