That is the problem with embedded systems. They have limited memory to work with.
My answer is 2 part.
1. Best sort in algorithmic perspective
Hands down there is no point in at least talking about using bubbble,insertion,selection sorts as they are not very efficient in memory wise and performance wise.
Following are some advanced sortings with their worst time and space complexities.
Quick sort, O(nn) ---- O(nlog(n))
Merge sort, O(n*log(n)) ---- O(n)
Tim sort, O(n*log(n)) ---- O(n)
Heap sort, O(n*log(n)) ---- O(1)
shell sort, O(n*log(n)^2) ---- O(1)
Bucket sort, O(n*n) ---- O(n)
Radix sort, O(nk) ---- O(n+k)
So since you need to save memory and speed up the processing time, I believe heap sort will be best alternative here as in worst cases also it operates under O(n*log(n)) and O(1) time and space complexities.
2. Performance wise
Since high performance is critical to this scenario you consider about code optimization,using EEPROM and expanding memory .