본문 바로가기

개인공부/Algorithm

[정렬(Sorting)] : 선택정렬, 삽입정렬, 버블정렬

■ 정렬(Sorting)이란?

2개 이상의 데이터를 특정한 기준에 따라 순서대로 나열하는 것 (오름차순/내림차순)

 

■ 선택정렬 (Selection Sort)

  - 주어진 데이터 중에서 가장 작은 데이터를 선택하여 맨 앞에 있는 데이터와 바꾸는 것을 반복한다.

  - 시간복잡도는 O(N²)

  - 선택정렬은 불안정 정렬(unstable sort)이다.

(1) 주어진 데이터에서 가장 작은 값을 찾는다.
(2) 가장 작은 값을 맨 앞에 위치한 값과 바꾼다.
(3) 맨 앞의 값을 제외하고 (1), (2) 과정을 반복한다.
1회차
2회차
3회차
4회차
결과

 

■ 삽입정렬 (Insertion Sort)

  - 처리되지 않은 데이터를 하나씩 골라 앞의 값들을 보면서 적절한 위치를 찾아 삽입하는 정렬 방법

  - 시간복잡도는 O(N²)

  - 삽입정렬은 안정 정렬(stable sort)이다.

(1) 2번째 Index부터 시작
(2) 선택한 Index의 값을 기준으로 기준 보다 Index 1 작은 Index의 값과 비교
(3) 비교한 값이 기준 값보다 작으면 다음 Index로 넘어감
(4) 비교한 값이 기준 값보다 크면 비교한 값의 Index 위치에 기준 값을 삽입, 비교 값 Indax는 1씩 증가
1회차
2회차
3회차
4회차
결과

 

■ 버블정렬 (Bubble Sort)

  - 서로 인접한 두 값을 비교하여 자리를 교환(swap)하는 방법

  - 시간복잡도는 O(N²)

  - 버블정렬은 안정 정렬(stable sort)이다.

(1) 인접한 두 개의 값을 비교
(2) 비교한 값 중에서 큰 값이 오른쪽에 위치 (오름차순기준)
(3) 순차적으로 반복해서 비교 수행
1회차
2회차
3회차
  .
.
.
결과