冒泡排序帮助+捕获打印到变量

时间:2017-02-17 06:25:05

标签: r

您好我正在尝试提前完成冒泡排序功能。 我需要打印交换次数+调用函数vector.bubbleup的次数。这是我的代码

vector.swap <- function(vector,index1,index2){
  temp <- vector[index1]
  vector[index1] <- vector[index2]
  vector[index2] <- temp
  return(vector)
}

vector.bubbleup <- function (vector) {
  index_start <- 1
  index_end <- length(vector) - 1
  swap <- 0
  for (index in index_start:index_end) {
    if (vector[index] > vector[index+1]) {
      vector <- vector.swap(vector,index,index+1)
      swap <- swap + 1
    }
  }
  print(swap)
  return(vector)
}


vector.bubblesort <- function(vector){
  iteration <- length(vector)-1
  while (iteration > 0){
    vector <- vector.bubbleup(vector)
       iteration <- iteration - 1
    }
  return(vector)
}

假设我有一个值为66 11 44​​ 88 47 36

的向量

vector.bubblesort的输出将是

[1] 4
[1] 2
[1] 1
[1] 1
[1] 0
[1] 11 36 44 47 66 88

向量之前的所有数字都是vector.bubbleup中使用的打印函数,但是如何记录它们以及如何计算函数的使用次数。

非常感谢!

1 个答案:

答案 0 :(得分:0)

交换次数和bubbleup次呼叫数可以存储在变量中。只需声明

nbSwaps <- 0
nbCalls <- 0 

在您的功能之外,并在每次调用该功能时为其添加正确的金额,例如nbSwaps <- nbSwaps + swapnbCalls <- nbCalls + 1