Taene's
[C++] 정렬 - 삽입 정렬(Insertion Sort) 본문
- 자료 배열의 모든 값을 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교 하여, 자신의 위치를 찾아 삽입해서 정렬을 완성한다.
- best case에서 (배열의 크기 - 1)만큼만 정렬하고자 탐색하고 바로 끝나고, stability하다.
#include <iostream>
using namespace std;
void Print(int* arr, int size)
{
for (int i = 0; i < size; i++)
cout << arr[i] << ' ';
cout << '\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int arr[] = { 4,3,2,10,12,1,5,6 };
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n - 1; i++)
{
if (arr[i] > arr[i + 1])
{
int insertNum = arr[i + 1];
int insertIndex = 0;
for (int k = i; k >= 0 && insertNum < arr[k]; k--)
{
arr[k + 1] = arr[k];
insertIndex = k;
}
arr[insertIndex] = insertNum;
Print(arr, n);
}
}
cout << '\n';
Print(arr, n);
return 0;
}
'C++ 개념 공부 > 알고리즘' 카테고리의 다른 글
[C++] 문자열 압축 (0) | 2024.04.05 |
---|---|
[C++] 탐색 - 순차 탐색(Sequential Search) (0) | 2024.04.03 |
[C++] 정렬 - 버블 정렬(Bubble Sort) (0) | 2024.04.02 |
[C++] 정렬 - 선택 정렬(Selection Sort) (0) | 2024.04.02 |
[C++] direct 기법 (0) | 2024.03.15 |