Pagini recente » Cod sursa (job #35669) | Cod sursa (job #3181167) | Cod sursa (job #2662850) | Cod sursa (job #123201) | Cod sursa (job #3132915)
#include <iostream>
#include <vector>
#include <fstream>
std::ifstream f("algsort.in");
std::ofstream g("algsort1.out");
int partition(std::vector<int> &arr, int start, int end)
{
int pivot = arr[start];
int count = 0;
for (int i = start + 1; i <= end; i++)
{
if (arr[i] <= pivot)
count++;
}
int pivotIndex = start + count;
std::swap(arr[pivotIndex], arr[start]);
int i = start, j = end;
while (i < pivotIndex && j > pivotIndex)
{
while (arr[i] <= pivot)
{
i++;
}
while (arr[j] > pivot)
{
j--;
}
if (i < pivotIndex && j > pivotIndex)
{
std::swap(arr[i++], arr[j--]);
}
}
return pivotIndex;
}
void quickSort(std::vector<int> &arr, int start, int end)
{
if (start >= end)
return;
int p = partition(arr, start, end);
quickSort(arr, start, p - 1);
quickSort(arr, p + 1, end);
}
int main()
{
std::vector<int> v;
int n, elem;
f >> n;
for (int i = 0; i < n; i++)
{
f >> elem;
v.push_back(elem);
}
quickSort(v, 0, v.size() - 1);
for (int i = 0; i < v.size(); i++)
g << v[i] << " ";
return 0;
}