Liya Fan created ARROW-7400:
-------------------------------

             Summary: [Java] Avoids the worst case for quick sort
                 Key: ARROW-7400
                 URL: https://issues.apache.org/jira/browse/ARROW-7400
             Project: Apache Arrow
          Issue Type: Improvement
          Components: Java
            Reporter: Liya Fan
            Assignee: Liya Fan


This issue is in response of a discussion in: 
https://github.com/apache/arrow/pull/5540#discussion_r329487232.

The quick sort algorithm can degenerate to an O(n^2) algorithm, if the pivot is 
selected poorly. This is an important problem, as the worst case can happen, if 
the input vector is alrady sorted, which is frequently encountered in practice.

After some investigation, we solve the problem with a simple but effective 
approach: take 3 samples and choose the median (with at most 3 comparisons) as 
the pivot. This sorts the vector which is already sorted in O(nlogn) time. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to