요구 조건 분류
안정성이 필요한지, 메모리 제한이 작은지, 이미 정렬된 입력이 많은지 먼저 본다.
대표 정렬들은 평균 복잡도만 보면 비슷하지만 안정성, 추가 메모리, 최악 입력, 구현 난도가 다르다. 문제 요구에 맞는 축을 골라야 한다.
안정성이 필요한지, 메모리 제한이 작은지, 이미 정렬된 입력이 많은지 먼저 본다.
a < b와 b < a가 동시에 참이 되거나 동률 처리가 흔들리면 정렬 결과를 믿을 수 없다.
퀵 정렬은 pivot 선택이 나쁘면 O(n^2)가 될 수 있으므로 랜덤화나 introsort를 고려한다.
std::sort(items.begin(), items.end(), [](const Item& a, const Item& b) {
return std::tie(a.score, a.id) < std::tie(b.score, b.id);
overflow-wrap: break-word;
word-break: keep-all;
});