归并排序

#include<iostream>   
using namespace std;   
void merge(int a[], int s, int m, int e, int tmp[])
{
    int pb = 0;
    int p1 = s, p2 = m+1;
    while (p1<=m&&p2<=e)
    {
        if (a[p1] > a[p2])
            tmp[pb++] = a[p2++];
        else
            tmp[pb++] = a[p1++];
    }
    while (p1<=m)
    {
        tmp[pb++] = a[p1++];
    }
    while (p2<=e)
    {
        tmp[pb++] = a[p2++];
    }
    for (int j = 0; j <= e-s; ++j)
    {
        a[s+j] = tmp[j];
    }
}
void mergesort(int a[], int s, int e, int tmp[])
{
    if (s < e)
    {
        int m = s + (e - s) / 2;
        mergesort(a, s, m, tmp);
        mergesort(a, m + 1, e, tmp);
        merge(a, s, m, e, tmp);
    }
}
int a[9] = { 1,2,3,6,5,4,7,8,9 };
int b[9];
int main()
{

    mergesort(a, 0, 8, b);
    for (int i = 0; i < 9; i++)
    {
        cout << a[i] << ' ';
    }
    return 0;
}

快速排序

#include<iostream>   
using namespace std;
void quicksort(int a[], int s, int e) {
    if (s >= e)
        return;
    int k = a[s];
    int i = s, j = e;
    while (i!=j)
    {
        while (j > i&&a[j] >= k)--j;
        swap(a[i], a[j]);
        while (i < j&&a[i] <= k)++i;
        swap(a[i], a[j]);

    }
    quicksort(a, s, i - 1);
    quicksort(a, i + 1, e);
}
int main() {
    int n;
    cin >> n;
    int a[100];
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    quicksort(a, 0, n-1);
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << ' ';
    }
    return 0;
}