[R] Variation of bubble sort (based on divisors)
Piotr Koller
pittbox33 at gmail.com
Fri Mar 31 20:16:02 CEST 2017
Hi, I'd like to create a function that will sort values of a vector on a
given basis:
-zeros
-ones
-numbers divisible by 2
-numbers divisible by 3 (but not by 2)
-numbers divisible by 5 (but not by 2 and 3)
etc.
I also want to omit zeros in those turns. So when I have a given vector of
c(0:10), I want to receive 0 1 2 4 6 8 10 3 9 5 7 I think it'd be the best
to use some variation of bubble sort, so it'd look like that
sort <- function(x) {
for (j in (length(x)-1):1) {
for (i in j:(length(x)-1)) {
if (x[i+1]%%divisor==0 && x[i]%%divisor!=0) {
temp <- x[i]
x[i] <- x[i+1]
x[i+1] <- temp
}
}
}
return(x)}
This function works out well on a given divisor and incresing sequences.
sort <- function(x) {
for (j in (length(x)-1):1) {
for (i in j:(length(x)-1)) {
if (x[i+1]%%5==0 && x[i]%%5!=0) {
temp <- x[i]
x[i] <- x[i+1]
x[i+1] <- temp
}
}
}
return(x)
}
x <- c(1:10)
print(x)
print(bubblesort(x))
This function does its job. It moves values divisible by 5 on the
beginning. The question is how to increase divisor every "round" ?
Thanks for any kind of help
[[alternative HTML version deleted]]
More information about the R-help
mailing list