//QUICKSORT
//data : 22.03.2002
#include <iostream.h>
#include <conio.h> //getch()
#include <stdlib.h> //randomize()
const N = 30;
int tab[N];
void wyswietl(int *, int);
void zamien(int &, int &);
void QuickSort( int*, int, int);
int partition(int *, int, int);
void main()
{
randomize();
for (int i=0; i<=N-1; i++)
{
tab[i] = random(N);
}
wyswietl(tab,N);
QuickSort(tab,0,N-1);
wyswietl(tab, N);
}
void wyswietl(int *t,int n)
{
cout << endl;
for (int i=0; i<=n-1; i++)
{
cout << t[i] << " ";
}
getch();
}
void zamien(int &x,int &y)
{
int temp=x;
x=y;
y=temp;
}
void QuickSort(int *t, int p, int k)
{
if (p < k)
{
int q = partition(t, p, k);
QuickSort(t,p,q);
QuickSort(t,q+1,k);
}
}
int partition(int *t, int p, int k)
{
int x = t[p];
int i = p-1;
int j = k+1;
while (1>0)
{
do
{
j--;
} while (t[j] > x);
do
{
i++;
} while (t[i] < x);
if (i < j)
{
zamien(t[i],t[j]);
}
else return j;
}
}