2017-02-17 51 views
1

你好,我正在尝试做一个早期完成泡沫排序功能。 我需要打印交换次数+函数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是vector.bubbleup中使用的打印函数,但是如何记录它们以及如何计算函数的使用次数。

非常感谢!

回答

0

调用次数和bubbleup调用次数可以存储在一个变量中。只需声明

nbSwaps <- 0 
nbCalls <- 0 

在您的功能之外,并且每次您调用该函数时都将正确的金额添加到它们中。 nbSwaps <- nbSwaps + swapnbCalls <- nbCalls + 1

+0

我将不得不跟踪我认为的第二功能的掉期。我需要一种方法将它们添加到第三个函数中。 –

+0

如果您在任何函数之外声明变量,则可以在任何需要的函数中修改它们。 – PinkFluffyUnicorn

+1

我得到了可以工作的代码,我所要做的就是将整个脚本转换为一个函数,这就是全部。 –