R中的快速排序-k个步骤后对数组进行排序

时间:2018-07-05 20:12:45

标签: r quicksort

我对R很陌生,因此我的代码肯定有一些改进。我想要对n个元素的数组进行快速排序,计算比较的数量,并在进行k个比较后输出排序后的数组。

到目前为止,我已经将代码重用于这里找到的快速排序算法:

quickSort <- function(arr) {

  # Pick a number at random.
  mid <- sample(arr, 1)
  print(arr)
  print(mid)

  # Place-holders for left and right values.
  left <- c()
  right <- c()

  # Move all the smaller values to the left, bigger values to the right.
  lapply(arr[arr != mid], function(d) {

    count <<- count + 1

    stopifnot(count <= k)

    if (d < mid) {
      left <<- c(left, d)
    }
    else {
      right <<- c(right, d)
    }
  })

  if (length(left) > 1) {
    left <- quickSort(left)
  }

  if (length(right) > 1) {
    right <- quickSort(right)
  }

  # Finally, return the sorted values.
  c(left, mid, right)
}

我目前正在努力解决以下几件事: 如何不仅获得当前正在排序的局部向量,还可以获得完整向量? 我在正确的位置放置了正确的停止条件吗?

我想要的例子: 给定一个数组(2,4,1,3,5)和第一个枢轴元素3,经过四次比较,我希望输出为(2,1,3,4,5)。

任何帮助将不胜感激!

0 个答案:

没有答案