【算法题】快速排序

来源:互联网 发布:php参考手册 编辑:程序博客网 时间:2024/05/20 05:54
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))

原创粉丝点击