Pagini recente » Cod sursa (job #575954) | Cod sursa (job #2313097) | Cod sursa (job #322322) | Cod sursa (job #2551112) | Cod sursa (job #997604)
Cod sursa(job #997604)
#include <fstream>
#include <ctime>
#include <cstdlib>
void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int parts(int *A, int l, int r, int k)
{
int index = l;
swap(A[k], A[r]);
for(int i = l; i < r; i++)
if(A[i] < A[r])
{
swap(A[i], A[index]);
index++;
}
swap(A[index], A[r]);
return index;
}
void quiksort(int *A, int left, int right)
{
if(left >= right) return;
int pi = left + rand() % (right - left);
int npi = parts(A, left, right, pi);
quiksort(A, left, npi - 1);
quiksort(A,npi + 1, right);
}
int main(void)
{
std::ofstream out("algsort.out");
std::ifstream in("algsort.in");
int nV, *nArr;
srand(time(NULL));
in >> nV;
nArr = new int[nV];
for(int i(0); i < nV; i++)
in >> nArr[i];
quiksort(nArr, 0, nV - 1);
for(int i(0); i < nV; i++)
out << nArr[i] << ' ';
return 0;
}