I learned about this from Matt Parker’s Stand-Up Maths channel. It was originally conceived as a counterexample, a sorting algorithm that was obviously broken, but it does actually sort correctly. The algorithm:

for i = 1 to n do  
	for j = 1 to n do  
		if A[i] < A[j] then  
			swap A[i] and A[j]  

It has a few quirks (like j accessing elements outside of i’s range, and the A[i] < A[j] comparator being backward) that should break it, but they all work together to make the algorithm correctly (if inefficiently) sort the input.

paper describing the algorithm in more detail.

  • mesa@piefed.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 days ago

    My favorite sorts are random sort (toss them up, see where they fall. are they sorted?) and bead sort (connect 4 sort).

    One is potentially O(1) sort and the other is potentially O(n). haha. But in practice they are terrible. Love it.

    This sort is neat too.