Maintaining sort order
If your application has collections that are always sorted, then you need a way to maintain that sort order. This means that once you add or change values in a collection, you have to make sure that the collection is still in the order that you expected.
Finding the insertion index
Let's say that you want to add a value to a list that's already sorted. Using push()
will insert the value at the end of the list, and this isn't what you want. The insert()
method can put the value at a particular index—you just have to figure out which index to use to keep the list sorted:
const sortedInsert = (item, list) => { let low = 0; let high = list.count(); while (low < high) { const mid = (low + high) >>> 1; if (item > list.get(mid)) { low = mid + 1; } else { high = mid; } } return list.insert(low, item); };
The sortedIndex()
function takes a value and a list into which to insert the value as arguments. It then does a simple...