Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
21
Task/Quickselect-algorithm/R/quickselect-algorithm.r
Normal file
21
Task/Quickselect-algorithm/R/quickselect-algorithm.r
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
quickselect <- function(vec, k) {
|
||||
stopifnot(k > 0, k <= length(vec))
|
||||
repeat {
|
||||
pivot_index <- sample.int(length(vec), 1)
|
||||
pivot_value <- vec[[pivot_index]]
|
||||
left <- vec[vec < pivot_value]
|
||||
right <- vec[vec > pivot_value]
|
||||
pivot_index <- length(left) + 1
|
||||
if (k == pivot_index) {
|
||||
return(pivot_value)
|
||||
} else if (k < pivot_index) {
|
||||
vec <- left
|
||||
} else {
|
||||
k <- k - pivot_index
|
||||
vec <- right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vec <- c(9, 8, 7, 6, 5, 0, 1, 2, 3, 4)
|
||||
print(sapply(1:10, quickselect, vec = vec))
|
||||
Loading…
Add table
Add a link
Reference in a new issue