I do this actually for a lot of my core algorithms. It is prohibitively expensive to add data to queues/collections and run the same calculations over the adjusted dataset rather than adjusting the computed value for dropped out data and new data points directly. But not all algorithms lend themselves to such approach. Kalman filters are such example where no time series are required to generate new estimates. Most moving averages (to just name a very simple example) can also be updated without having to retain the entire data collection in memory.
Not sure if R can handle this, but a common approach when dealing with large working sets and stable sorting expectations is to use something called a priority queue or heap - which is a form of tree (the usual implementation). Data is inserted into the heap such that the insert pays the cost of the sort (it's being stored in sorted form). Reads from the heap cost significantly less than constantly qsort()ing the data when needed.
However, if you need to sort things different on a continual basis then it's not an option. If you only need 1 sort and only that sort, then it's definitely an option, provided you have a way of expressing/storing it that way with R.
