Pagini recente » Cod sursa (job #1244445) | Cod sursa (job #1737053) | Cod sursa (job #769868) | Cod sursa (job #1706091) | Cod sursa (job #1990599)
#include <fstream>
#include <cstdlib>
#include <ctime>
int part(int *myV, int left, int right, int pivot) {
int val = myV[pivot];
std::swap(myV[pivot], myV[right]);
int ind = left;
for (int i(left); i < right; i++) {
if (myV[i] < val) {
std::swap(myV[i], myV[ind]);
ind++;
}
}
std::swap(myV[right], myV[ind]);
return ind;
}
void quicksort(int *myV, int left, int right) {
if (left >= right) {
return;
}
int pivot = left + (rand() % (left - right));
int pos = part(myV, left, right, pivot);
quicksort(myV, left, pos - 1);
quicksort(myV, pos + 1, right);
}
int main() {
std::ifstream fileIn("algsort.in");
std::ofstream fileOut("algsort.out");
srand(time(nullptr));
int nV;
fileIn >> nV;
int *myV = new int[nV];
for (int i(0); i < nV; i++) {
fileIn >> myV[i];
}
quicksort(myV, 0, nV - 1);
for (int i(0); i < nV; i++) {
fileOut << myV[i] << ' ';
}
delete[] myV;
fileIn.close();
fileOut.close();
return 0;
}