Quick sort가 항상 빠르고 좋은가? 정렬하고자 하는 데이터의 크기n이 작을때를 가정해보자. 계속해서 재귀적으로 partition 함수를 호출하는 quick sort로만 정렬한다면 n이 작을 때function call하는 비용이 더 많이 들것이다. 즉, n이 작아진 경우에는 다른 sorting algorithm을 통해 정렬하는 것이 더 효율적일 수 있다. n 값이 작을 때, nlongn 과 n^2 차이는 미미하므로Insertion sort로 구현하는 것이 더 효율적일 수 있다. 실제로 Java에서 quick sort의 구현이 이렇게 되어있다. n값이 작을 때는 Insertion sort로 정렬한다.
Merge sort는 언제 쓰일까? 한정된 메모리 상황에서‘빅 데이터'를 정렬해야 하는 경우를 가정하자. 기존의 정렬 알고리즘으로 한번에 정렬 할 수 없는.. 디스크에서 읽어오는데 데이터 전부를 메모리에 올리지 못하는 경우 말이다. 그래서 이 큰 문제를 작은 문제로 나누어(Divide) 정렬한다. 작은 문제로 나누어진 데이터를 quick sort로 정렬한 뒤(Conquer) 각각 정렬된 데이터들을 다시 합쳐야한다(Combine). 하지만 그냥 combine 한다면 작은 문제로 정렬한 의미가 없어지므로 이 경우에merge sort를 사용하여 combine 하는 것이다. 즉, Merge sort는 DB에 많이 쓰인다.