I want to sort the numbers using linked list in O(nlogn) time complexity and O(1) space complexity? Plz help me in this.
# | User | Rating |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 155 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
I want to sort the numbers using linked list in O(nlogn) time complexity and O(1) space complexity? Plz help me in this.
Name |
---|
Use merge sort: If your list is empty or contains single element, it is already sorted, otherwise split it into two equal parts, sort them recursively and merge into single sorted list.
Yes, but how to maintain O(1) space complexity, thats the only issue I am facing. Can you plz provide me link where I can find code or explanation of how to maintain O(1) space complexity( meeting O(nlogn) time complexity).
Do you have a linked list or array? The former allows you to re-arrange, insert and remove elements arbitrary in O(1), the latter does not (but it also does not require keeping a pointer to element to make any action).
Simple implementation. https://gist.github.com/Norpadon/410649f0389749601980
This is recursive so has O(logn) space complexity
Thanks, i missed that.
Here is non-recursive version: https://gist.github.com/Norpadon/e5a9f1b1139a17a9500e
Code is a bit messy, but idea should be clear.