2011-04-18 51 views
2

伊夫看看無處不在,無論算法我發現(如果有的話笑)對在C載體插入排序++,它不會工作,以便即時通訊假設它是與我的代碼。誰能幫我想辦法,我可以通過一個載體導入作爲參數的方法,然後做一個插入排序就可以了?目前,它等待幾秒鐘,表示所有的值未排序:(C++載體插入排序算法的方法 - 通過載體導入方法

插入排序代碼

void insertionSort (vector<int> data, int n) 
{ 
int i, j, tmp; 

for (i=1; i<n; i++) 
{ 
    j=i; 
    tmp=data[i]; 
    while (j>0 && tmp<data[j-1]) 
    { 
      data[j]=data[j-1]; 
      j--; 
    } 
    data[j]=tmp; 
} 

代碼的重要組成部分

 cout << "insertion sort" << endl; 
     system("pause"); 
     insertionSort(numberVectors, i); 

讓我知道,如果你不認爲那裏有什麼不對的代碼,你要我給你更多的展示,應該只是這一點,雖然,其他的東西是irrelavent我認爲

感謝

+0

最好是讓你的函數模板。 – alternative 2011-04-18 23:36:22

回答

6

你的功能由價值接受它的參數;這意味着它得到副本。你對這份副本進行排序是徒勞的。

改變它,而不是一個參考:

void insertionSort (vector<int>& data, int n) 
+0

我所做的一切... theres總是一個簡單的解決方案,非常感謝你,非常感激,現在可以繼續,這是buggin我的年齡:) – 2011-04-18 22:34:57

+2

另外,如果'n'只是' data'那麼你甚至不需要它,因爲你可以調用'data.size()'找出多少個元素有。 – QuantumMechanic 2011-04-18 23:40:19

1

通過引用傳遞你的數組,然後在功能的變化會反映在它

void insertionSort (vector<int> &data, int n) 
{ 
    ... 
}