刚学的快排,刚学的类。练习一下封装,矬得一批。练熟了再来改
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
class wqsort
{
private:
int s, e;
bool (* cmp)(int, int);
void main_sort(int * a, int low, int high);
public:
wqsort(int *a, int * n, bool (*f)(int, int));
};
wqsort::wqsort(int *a, int * n, bool (*f)(int, int)) : e(n - a - 1), cmp(f)
{
s = 0;
main_sort(a, s, e);
}
void wqsort::main_sort(int * a, int low, int high)
{
if(low >= high)
{
return ;
}
int i = low;
int j = high;
int k = * (a + low);
while(low < high)
{
while(low < high && !cmp(* (a + high), k))
high --;
* (a + low) = * (a + high);
while(low < high && cmp(* (a + low), k))
low ++;
* (a + high) = * (a + low);
}
* (a + high) = k;
main_sort(a, i, high - 1);
main_sort(a, high + 1, j);
}
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int n;
int a[1010];
cin >> n;
for(int i = 0; i < n; ++ i)
{
scanf("%d", &a[i]);
}
wqsort(a, a + n, cmp);
for(int i = 0; i < n; ++ i)
{
cout << a[i] << ' ';
}
cout << endl;
return 0;
}