次のコードに問題があります。
class quicksort {
private:
void _sort(double_it begin, double_it end)
{
if ( begin == end ) { return ; }
double_it it = partition(begin, end, bind2nd(less<double>(), *begin)) ;
iter_swap(begin, it-1);
_sort(begin, it-1);
_sort(it, end);
}
public:
quicksort (){}
void operator()(vector<double> & data)
{
double_it begin = data.begin();
double_it end = data.end() ;
_sort(begin, end);
}
};
ただし、これは要素数が多すぎる場合には機能しません (10 000 要素では機能しますが、100 000 では機能しません)。
コード例:
int main()
{
vector<double>v ;
for(int i = n-1; i >= 0 ; --i)
v.push_back(rand());
quicksort f;
f(v);
return 0;
}
STL パーティション機能はこのようなサイズでは動作しませんか? または、何か不足していますか?
助けてくれて本当にありがとうございます。