2017-02-17 50 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

我得到了可以工作的代碼,我所要做的就是將整個腳本轉換爲一個函數,這就是全部。 –