So basically you're sorting the data by changing the order of the pointers, that's why you don't need to "move" data, or no?
Correct. If you have a look at the code, you'll see there's a function called ExchangeArraySlots, which is where the magic happens. It changes the pointer at array[slot1] to array[slot2] and vice versa.