int partition(int* array, int left, int right)
{
if (array==nullptr||left>=right)
{
return left;
}
int k = array[right];
int mid = left - 1;
for (auto i = left; i < right;++i)
{
if (array[i]<k)
{
mid++;
std::swap(array[i], array[mid]);
}
}
mid++;
std::swap(array[right], array[mid]);
return mid;
}
void quicksort(int * array, int left, int right)
{
if (array == nullptr || left>=right)
{
return;
}
int k = partition(array, left, right);
quicksort(array, left, k - 1);
quicksort(array, k + 1, right);
}
int main()
{
int array[5] {3, 2, 5, 1, 2};
quicksort(array, 0, 4);
return 0;
}
最坏时间复杂度:
O(n2)
最好时间复杂度:
O(nlog(n))
平均时间复杂度:
O(nlon(n))
最坏空间复杂度:栈深度:
O(n)
最好空间复杂度:栈深度:
O(log(n))