Hello everyone, I am learning R since recently, and as a small exercise I wanted to write a recursive mergesort. I was extremely surprised to discover that my sorting, although operational, is deeply inefficient in time. Here is my code :
> merge <- function(x,y){ > if (is.na(x[1])) return(y) > else if (is.na(y[1])) return(x) > else if (x[1]<y[1]) return(c(x[1],merge(x[-1],y))) > else return(c(y[1],merge(x,y[-1]))) > } > > division <- function(x){ > if (is.na(x[3])) return(cbind(x[1],x[2])) > else > return(cbind(c(x[1],division(x[-c(1,2)])[,1]),c(x[2],division(x[-c(1,2)])[,2]))) > } > > mergesort <- function(x){ > if (is.na(x[2])) return(x) > else{ > print(x) > t=division(x) > return(merge(mergesort(t[,1]),mergesort(t[,2]))) > } > } I tried my best to write it "the R-way", but apparently I failed. I suppose some of the functions I used are quite heavy. I would be grateful if you could give a hint on how to change that! I hope I made myself clear and wish you a nice day, Cheers, Gaston [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.