2015-09-28 87 views
-1

這只是我的代碼的一部分,用於快速排序。 它一直返回錯誤:「沒有匹配調用交換功能」錯誤:沒有用於調用交換的匹配函數

爲什麼以及如何解決?

using namespace std;  
void print_array(int array[], int low, int hi)  
{ 
    cout<< "quick sort partition steps: ";  
    for (int j=low; j<=hi;j++) 
     cout <<" "<< array[j]; 
    cout << endl;  
} 
//end of print_array 

int partition (int arr[], int low, int hi)  
{  
    int pivot = arr[hi]; 
    int i = low; 

    for (int j = low; j<hi; j++) 
    { 
     if (arr[j] <= pivot) 
     { 
      swap(arr, i, j); 
      i++; 
     } 
    } 
    print_array(arr, low, hi); 
    swap(arr, i, hi);  
    return i; 
} 
+2

看爲'的std :: swap'一些文檔是一個好的開始。它甚至沒有三個參數。 – chris

+0

您是否定義了自己的交換功能?如果是這樣,你是否宣佈它高於第一次使用?正如目前所寫,這個問題無法得到解答 – user4581301

回答

0

如果你的意思是使用std::swap,試試這個:

  • swap(arr[i], arr[j]);,而不是swap(arr, i, j);
  • swap(arr[i], arr[hi]);而不是swap(arr, i, hi);
相關問題