This implementation looks wrong to me. Shouldn't the loops go like this:
for i := Low(data) to High(data)-1 do for j := i + 1 to High(Data) do
?? --Dummzeuch (talk) 09:52, June 8, 2016 (UTC)