<-->
본문 바로가기

알고리즘

정렬의 stability

반응형

안정정렬과 불안정정렬을 예시를 들어 정리해봤다.

 

정렬 전 데이터베이스

  이름 학년
1 가케니 3
2 다스탠 3
3 라카트먼 3
4 나버터스 2
5 마카일 1

이름을 오름차순으로 처음 정렬할때

어떤 정렬기법을 사용하든 결과는 똑같다.

 

첫번째 이름 기준 정렬 결과

  이름 학년
1 가케니 3
2 나버터스 2
3 다스탠 3
4 라카트먼 3
5 마카일 1

 

 

하지만 여기서 학년 기준 오름차순으로 한번 더 정렬한다면

사용한 정렬기법에 따라 결과가 바뀐다.

 

case 1. 불안정 정렬 ex )선택정렬, 퀵정렬

(아래는 첫번째 정렬결과에 추가로 학년기준 선택정렬을 한 것이다. 3학년들의 정렬 상태를 확인해보자 )

  이름 학년
1 마카일 1
2 나버터스 2
3 다스탠 3
4 라카트먼 3
5 가케니 3

학년은 잘 정렬이 됐으나 이름정렬을 다시해야하게 생겼다.

 

case 2. 안정 정렬 ex )삽입정렬, 병합정렬

(삽입,병합정렬을 사용하면 학년이 a>b인 경우에만 순서가 바뀐다. (오름차순의 경우)

달리말해서 a<=b 이면 순서가 바뀌지 않으므로 같은 학년의 경우 이름또한 정렬된 상태로 유지된다.

 

  이름 학년
1 마카일 1
2 나버터스 2
3 가케니 3
4 다스텐 3
5 라카트먼 3

이름과 학년이 잘 정렬됐다.

 

사용할 정렬을 선택할때 stability도 고려하자!

'알고리즘' 카테고리의 다른 글

algorithm, part1 | Coursera 과제 하는법 (mac)  (0) 2021.03.16
quickSort 파이썬 구현 (백준 2750)  (0) 2021.03.10
15일차 - 똑똑똑똑똑  (0) 2021.03.08
Devide and Conquer(mergeSort)  (0) 2021.03.08
선택 정렬 시간복잡도  (0) 2021.03.01