# Stooge sort in R:

stooge.sort <- function(elements.vec) {
	i = 1
	j = length(elements.vec)
	if (elements.vec[j] < elements.vec[i]) elements.vec[c(j, i)] = elements.vec[c(i, j)]
	if (j - i > 1) {
		t = (j - i + 1) %/% 3
		elements.vec[i:(j - t)] = stooge.sort(elements.vec[i:(j - t)])
		elements.vec[(i + t):j] = stooge.sort(elements.vec[(i + t):j])
		elements.vec[i:(j - t)] = stooge.sort(elements.vec[i:(j - t)])
	}
	elements.vec
}
 
# Example:
# stooge.sort(sample(21, 20))
# [1] 1  2  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21