Hi, could anybody help me to find a fast way to fix the following question?
Given a verctor of length N, for example bo = [3 8 4 6 1 5], I want to drive a vector whose elements are 1, 2, ..., N and the order of elements is the same as that in verctor bo. In this example, the result is supposed to be bt = [2 6 3 5 1 4]. I used the following code to solove this: bo <- c(3, 8, 4, 6, 1, 5) N <- length(bo) bt <- rep(0, N) M <- max(bo) temp <- bo for(i in 1 : N) { min <- M i_min <- 0 for(j in 1 : N) { if(min >= temp[j]) { min <- temp[j] i_min <-j } } bt[i_min] <- i temp[i_min] <- M+ 1 } > bt [1] 2 6 3 5 1 4 However, the time complexity is O(N2). When N is larger than 1000000, it takes too much time. Is there any faster way to fix it? best Xueming xmliu1...@gmail.com [[alternative HTML version deleted]] ______________________________________________ R-help@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.