快速排序,分区不编译

时间:2017-05-25 23:37:38

标签: c++ arrays sorting quicksort partition

我一直在尝试编译这段代码,但似乎并不希望分区功能正常工作。显然它与阵列有关,但我无法弄清楚它是什么。

编辑:我正在使用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&)'

感谢任何能够解决此问题的人。除了分区功能之外的所有东西似乎都能正常工作。

1 个答案:

答案 0 :(得分:2)

我认为您已经在此代码之上完成了using namespace std;。在这种情况下,std::partition是一种设计用于处理STL容器的算法,而不是原始的C样式数组。考虑使用引用进行检查(例如,here)。

不幸的是,您需要查找/编写适用于原始数组的分区算法,或者从int arr[]迁移到std::vector<int>之类的内容。

否则,如果partition确实是您代码中的另一项功能,请同时提供。

希望有所帮助。