2017-05-25 8 views
-2

私はこのコードをコンパイルしようとしていますが、パーティション機能が動作しないように見えます。どうやらそれは配列と関係があるが、それが何であるかわからない。パーティションがコンパイルされていないクイックソート

編集:元のパーティション機能ではなく、std :: partitionを使用しています。

#include <ctime> 
#include <string> 
#include <algorithm> 
#include <array> 
#include <iostream> 
using namespace std; 

const int MAX_SIZE = 10000; 
const int MIN_SIZE = 10; 

ここでクイックソートだ:

//quick sort 
void quickSort(int arr[], int first, int last, int size) 
{ 
    if(last - first + 1< MIN_SIZE) 
    { 
     insertionSort(arr,size); 
    } 
    else 
    { 
     int pivotIndex = partition(arr, first, last); 
     quickSort(arr, first, pivotIndex-1,size); 
     quickSort(arr, pivotIndex+1,last,size); 
    } 
} 

ここでエラーがあります:これをクリアすることができます誰にでも

error: no matching function for call to 'partition(int*&, int&, int&)' 

感謝。パーティション機能を除くすべてが正常に動作しているようです。

+0

コンパイラエラーは配列に関するものではありません。それは 'partition'関数そのものです。呼び出されていなくても、コンパイラはあなたが呼び出しようとしている関数を理解できません。 – iehrlich

答えて

2

このコードの上にusing namespace std;を行ったことが前提です。この場合、std::partitionは、生のCスタイルの配列ではなくSTLコンテナで動作するように設計されたアルゴリズムです。参照で確認することを検討してください(たとえば、here)。

残念ながら、生の配列で動作するパーティションアルゴリズムを検索/書き込みするか、int arr[]からstd::vector<int>に移行する必要があります。

partitionが実際にコード内の別の機能である場合は、それも入力してください。

希望に役立ちます。

+0

ありがとう、私はそれらの両方を試してみます。 –

+0

@BenPerkinsも答えの最新の編集を見ています。これは単にこれまでの推測ゲームなので... – iehrlich

+0

私はstd :: partitionを使用しています。 –

関連する問題