A5552.二路归并 题解
UPD:后面更新了归并。
思路
总体思路第一步都是把两个数组合并成一个数组再排序,由于编者懒就先提一下。
且:令 s→n+ms → n+ms→n+m。
方法 1
map 红黑树键值会自动排序,让他帮我排就可以了,用的方法和桶是一样的。时间复杂度 O(slogs)O(s \log s)O(slogs)。
方法 2
就是两个序列合起来再用 STL 的 sort 排序(这里排序也可以是其他的),输出就可以了。时间复杂度 O(slogs)O(s \log s)O(slogs)。
方法 3
桶排,用桶记一下然后输出。时间复杂度 O(s)O(s)O(s)。
方法 4
堆排,用 STL 的优先队列(priority_queue)来排,记住 STL 的优先队列默认是大根堆,要手动切换成小根堆。时间复杂度 O(slogs)O(s \log s)O(slogs)。
方法 5
归并,按照归并排序的思路做,建议做做瑞士轮。时间复杂度 O(s)O(s)O(s)。
代码
挺简单的。
方法 1
方法 2
方法 3
方法 4
方法 5