AbstractSort is a sorting function that only needs to know how many items there are, how to compare items at individual locations - where location is in [0, NumElements) - and how to swap two elements at given locations. The main use case is to sort multiple arrays while keeping them in sync. For example: