|
发表于 2009-10-31 01:21:57
|
显示全部楼层
IP:江苏扬州
// try it
#include <iostream>
using namespace std;
class QuickSorter
{
private:
int * a;
int size;
void quicksort(int lo, int hi)
{
int i=lo, j=hi;
int x=a[(lo+hi)/2];
// Aufteilung
while (i<=j)
{
while(a[i]<x)
i++;
while(a[j]>x)
j--;
if(i<=j)
{
exchange(i, j);
i++;
j--;
}
}
// Rekursion
if(lo<j)
quicksort(lo, j);
if(i<hi)
quicksort(i, hi);
}
void exchange(int i, int j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
public:
QuickSorter(int * pi, int s)
{
size = s;
a = new int[size];
memcpy(a, pi, size * sizeof(int));
}
~QuickSorter()
{
if(a)
{
delete [] a;
size = 0;
}
}
void sort()
{
quicksort(0, size - 1);
}
void display()
{
for(int i = 0; i<size; i++)
cout<<a[i]<<" ";
}
};
int main()
{
int a[] = {1,1,2,1,-6,1,1,1,1,1};
QuickSorter myQuickSorter(a, sizeof(a)/sizeof(int));
myQuickSorter.sort();
myQuickSorter.display();
return 0;
}
// viel Spass |
|