Hey guys, I tried to program quicksort like this but somethings wrong. please help>partition <- function(x, links, rechts){ > > i <- links > j <- rechts > t <- 0 > pivot <- sample(x[i:j],1) > > while(i <= j){ > > while(x[i] <= pivot){ > i = i+1} > > while(x[j] >= pivot){ > j = j-1} > > if( i <= j){ > > t = x[i] > x[i] = x[j] > x[j] = t > > i=i+1 > j=j-1 > > } > print(pivot) > > > } > #Rekursion > > if(links < j){ > partition(x, links, j)} > if(i < rechts){ > partition(x, i, rechts)} > > return(x) > } > > >quicksort <- function(x){ > > > > partition(x, 1, length(x)) >}thx -- View this message in context: http://r.789695.n4.nabble.com/what-is-wrong-with-my-quicksort-tp3788681p3788681.html Sent from the R help mailing list archive at Nabble.com.
have you tried to debug it yourself. All you said is that 'it went wrong'. that is not a very clear statement of the problem. If I were to start looking at it, I would put some print statements in it to see what is happening on eachpath and with each set of data. Have you tried this? Sent from my iPad On Sep 3, 2011, at 21:51, warc <conny-clauss at gmx.de> wrote:> Hey guys, > I tried to program quicksort like this but somethings wrong. > > please help > > > >> partition <- function(x, links, rechts){ >> >> i <- links >> j <- rechts >> t <- 0 >> pivot <- sample(x[i:j],1) >> >> while(i <= j){ >> >> while(x[i] <= pivot){ >> i = i+1} >> >> while(x[j] >= pivot){ >> j = j-1} >> >> if( i <= j){ >> >> t = x[i] >> x[i] = x[j] >> x[j] = t >> >> i=i+1 >> j=j-1 >> >> } >> print(pivot) >> >> >> } >> #Rekursion >> >> if(links < j){ >> partition(x, links, j)} >> if(i < rechts){ >> partition(x, i, rechts)} >> >> return(x) >> } >> >> >> quicksort <- function(x){ >> >> >> >> partition(x, 1, length(x)) >> } > > > > thx > > -- > View this message in context: http://r.789695.n4.nabble.com/what-is-wrong-with-my-quicksort-tp3788681p3788681.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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.
Hey again and thanks for all the help this is what i have for now but it still doesn't work, the main problem is the random pivot i think (error in while (x[j] >= pivot) { : Argument has length 0)>partition <- function(x, links, rechts){ > > i <- links > j <- rechts > t <- 0 > pivot <- x[sample((links:rechts),1)] > > > while(i <= j){ > > while(x[i] <= pivot){ > i = i+1} > > while(x[j] >= pivot){ > j = j-1} > > if( i <= j){ > > > t = x[i] > x[i] = x[j] > x[j] = t > > i=i+1 > j=j-1 > > } > } > return(pivot) > } > >qsort <- function(x, links, rechts){ > > index <- partition(x, links, rechts) > > if((links < (index+1))&(length(x)>1)){ > qsort(x, links, index+1)} > > > if((index < rechts)&(length(x)>1)){ > qsort(x, index, rechts)} > > return(x) > } > > >quicksort <- function(x){ > > if(length(x) == 0)stop("empty Vector") > > qsort(x, 1, length(x)) >}but whatever i will just keep on trying thank you again -- View this message in context: http://r.789695.n4.nabble.com/what-is-wrong-with-my-quicksort-tp3788681p3789902.html Sent from the R help mailing list archive at Nabble.com.