# Counting sort in R:
counting.sort <- function(elements.vec){
min <- min(elements.vec)
max <- max(elements.vec)
count <- rep(0,(max - min + 1))
for(i in 1:length(elements.vec)){
x <- 1 - min + elements.vec[i]
count[x] <- count[x] + 1
}
for(i in 2:length(count)){
count[i] <- count[i] + count[i-1]
}
result <- rep(0,length(elements.vec))
for(i in 1:length(elements.vec)){
x <- 1 - min + elements.vec[i]
index <- count[x]
result[index] <- elements.vec[i]
count[x] = count[x] - 1
}
return(result)
}
# Example:
# counting.sort(c(5, 2, 3, 1, 4))
# [1] 1 2 3 4 5