快速排序(C++实现)

#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
    //交换两个元素
    int temp = a;
    a = b;
    b = temp;
}
int Partition(int A[], int p, int r)
{
    //将A[p...r]划分为:A[p...q-1] <= A[q] <= A[q+1...r]
    int X = A[r]; //划分元
    int i = p-1; //保持A[p...r]<=X;
    for (int j=p; j<=r-1; j++)
    {
        //始终i<j
        if (A[j] <= X) {
            i = i+1;
            swap(A[i],A[j]);
        }
    }
    swap(A[i+1],A[r]);
    return (i+1);
}
void QuickSort(int A[], int p, int r)
{
    if (p<r)
    {
        int q = Partition(A, p, r);
        QuickSort(A, p, q-1);
        QuickSort(A, q+1, r);
    }
}

int main()
{
    int A[6] = {3,1,5,7,4,2};
    QuickSort(A, 0, 5);
    for (int i=0; i<6; i++)
    {
        cout << A[i] << " ";
    }
    cout << endl;
    return 0;
}

  

posted @ 2020-08-27 19:03  大战拖延  阅读(217)  评论(0)    收藏  举报