richox opened a new issue, #4300:
URL: https://github.com/apache/arrow-datafusion/issues/4300

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   
   `SortPreservingMergeStream` currently uses a binary heap for k-way merging, 
which gets `O(NlogS)` time complexity (S=num_streams). however, when a top 
record is taken from the heap, we need to perform a pop/push operation and are 
likely to take `2*logS` comparisons.
   
   an improved way is to use a Tournament Tree (aka Loser Tree) to do the 
selection. when the top record is taken, the tree structure is not modified, 
and only the path from bottom to top is visited. the number of comparisons is 
always `logS`.
   
   reference: 
https://en.wikipedia.org/wiki/K-way_merge_algorithm#Tournament_Tree
   
   **Describe the solution you'd like**
   implement the loser tree algorithm in `SortPreservingMergeStream`.
   
   **Describe alternatives you've considered**
   
   **Additional context**
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to