我一直在尝试编译这段代码,但似乎并不希望分区功能正常工作。显然它与阵列有关,但我无法弄清楚它是什么。
编辑:我正在使用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 :(得分:2)
我认为您已经在此代码之上完成了using namespace std;
。在这种情况下,std::partition
是一种设计用于处理STL容器的算法,而不是原始的C样式数组。考虑使用引用进行检查(例如,here)。
不幸的是,您需要查找/编写适用于原始数组的分区算法,或者从int arr[]
迁移到std::vector<int>
之类的内容。
否则,如果partition
确实是您代码中的另一项功能,请同时提供。
希望有所帮助。