使用分区函数在R中编写快速排序函数时遇到错误

使用分区函数在R中编写快速排序函数时遇到错误,r,R,我在R中编写了这个快速排序函数,试图合并我创建的分区函数。然而,我在比较p和r时遇到了错误。它一直告诉我,我的参数的长度是0,然而,我认为我在最初调用quicksort函数时声明了p和r对象 partition <- function(input,p, r){ pivot = input[r] while(p<r){ while(input[p]<pivot) {p<-p+1} while(input[r]>pivot) {r<-r-1

我在R中编写了这个快速排序函数,试图合并我创建的分区函数。然而,我在比较p和r时遇到了错误。它一直告诉我,我的参数的长度是0,然而,我认为我在最初调用quicksort函数时声明了p和r对象

partition <- function(input,p, r){
  pivot = input[r]
  while(p<r){
    while(input[p]<pivot) {p<-p+1}
    while(input[r]>pivot) {r<-r-1}
    if(input[p]==input[r]) {p<-p+1}
    else if (p<r){
      tmp <- input[p]
      input[p] = input[r]
      input[r] = tmp
    }
  }
 return(r)
}


quicksort<- function(input,p,r){

 if(p<r){
    j<- partition(input,p,r)
    input <- quicksort(input,p,j-1)
    input <- quicksort(input,j+1,r)

 }

}

input <- c(500,700,800,100,300,200,900,400,1000,600)
print("Input:")
print(input)
quicksort(input,1,10)
print("Output:")
print(input)

partition问题中的错误是由于输入[p]的长度为零引起的。为什么?因为在这个实例中,输入为NULL。输入在前几步中不是空的,那么什么会使它为空呢

您的快速排序功能旨在接受输入,并对其进行更改(如果
p