본문 바로가기
백준 문제 풀이 & C++ 공부

C++ sort & stable_sort

by daisy0461 2021. 7. 7.

sort는 불안정정렬이고 stable_sort는 안정정렬입니다.

이 두가지의 차이점을 먼저 말씀드리겠습니다.

배열이 다음과 같이 나와있을 수 있습니다.

배열 예시

이게 정렬 전 배열입니다.

같은 숫자는 자신의 앞과 뒤의 순서를 알아볼 수 있도록 색깔을 빨강(선) - 주황(후)로 하겠습니다.

일반적인 stable_sort(안정정렬)은 다음과 같이 정렬이 완성됩니다.

stable_sort 결과

순서가 바뀌지 않고 정렬이 완성이 됩니다.

 

하지만 정렬이 되지 않은 배열을 sort로 정렬하면 다음과 같이 됩니다.

sort 결과

위의 결과와 같이 먼저 왔다고 해서 배열의 앞순서로 온다는 보장이 없습니다.

그렇기에 불안정정렬이라고 합니다.

물론 78의 순서도 서로 달라질 수 있고 25의 앞, 뒤 순서가 올바르게 될 수도 있습니다.

 

이러한 요소를 잘 고려해서 코딩을 만들면 좋을 것 같습니다.

sort에서 사용되는 퀵정렬과 stable_sort의 머지소트의 비교는

제 블로그인 아래의 글에 간단히 나와있습니다.

https://daisy0461.tistory.com/32?category=841468 

 

퀵소트 VS 머지소트

C++의 헤더에 있는 sort와 stable_sort를 공부를 하다가 sort의 내부적인 sort인 '퀵소트' vs stable_sort의 내부적인 sort인 '머지소트' 가 궁금해져서 이렇게 알고리즘에 대해 살짝 공부를 해보기로 했습니

daisy0461.tistory.com

 

'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글

백준 10816번 C++ & upper_bound, lower_bound  (0) 2021.08.18
백준 10814번 C++  (0) 2021.07.07
C++ Vector Container  (0) 2021.07.05
백준 9012 C++ & cin.ignore()  (0) 2021.07.04
백준 10773번 C++  (0) 2021.06.22