삽입 정렬

Updated:

  • 삽입 정렬(Insertion sort)

    삽입 정렬은(insertion sort)는 정렬된 부분의 위치에 데이터를 삽입하여 정렬하는 알고리즘으로 worst case는 이며, best case일때(이미 정렬된 상태)는 의 성능을 보인다.


  • 예시)

    1회전 :

    10 6 1 3 4

    10 6 1 3 4

    2회전 :

    10 6 1 3 4

    6 10 1 3 4 -> swap

    6 10 1 3 4

    3회전 :

    6 10 1 3 4

    6 10 1 3 4 -> swap

    6 1 10 3 4

    6 1 10 3 4 -> swap

    1 6 10 3 4

    1 6 10 3 4

    삽입(insert)이 이루어진다고 하지만 사실상 swap이랑 같은 의미이다. 데이터가 5개가 있다고 가정하면 1회전 끝나면 하나에 데이터가 정렬되있으며, 2회전은 2개의 데이터… N회전을 거치면 N개의 데이터가 정렬되게 된다.


  • 코드 구현(C++)
#include <iostream>
#include <algorithm>
using namespace std;
int A[5] = { 10,6,1,3,4 };
void print_arr() {
	for (int i = 0; i < 5; i++) cout << A[i] << " ";
	cout << "\n";
}
int main(void) {
	print_arr();
	for (int i = 1; i < 5; i++) {
		for (int j = i; j > 0; j--) {
			if (A[j] < A[j - 1]) {
				int temp = A[j];
				A[j] = A[j - 1];
				A[j - 1] = temp;
			}
			else
				break;
		}
		print_arr();
	}
	return 0;
}

  • 결과