Pagini recente » Cod sursa (job #843393) | Cod sursa (job #3309136) | Cod sursa (job #2228058) | Atasamentele paginii Profil Cristi2211 | Cod sursa (job #1702115)
#include <fstream>
#include <vector>
#include <cstdlib>
using namespace std;
int partition(vector<int>& v, int left, int right)
{
int r = rand() % (right - left + 1);
int piv = left + r;
int x = v[piv];
swap(v[piv], v[right]);
int l = left - 1;
for(int i = left;i < right;++i)
{
if(v[i] <= x)
{
swap(v[i], v[l++]);
}
}
swap(v[right], v[l + 1]);
return l + 1;
}
void q_sort(vector<int>& v, int left, int right)
{
if(left >= right)
{
return;
}
int pivot = partition(v, left, right);
q_sort(v, left, pivot - 1);
q_sort(v, pivot + 1, right);
}
void quick_sort(vector<int>& v)
{
int l = 0;
int r = v.size() - 1;
q_sort(v, l, r);
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
int N;
in >> N;
vector<int> v;
for(int i = 0;i < N;++i)
{
int nr;
in >> nr;
v.push_back(nr);
}
quick_sort(v);
for(int i = 0;i < N - 1;++i)
{
out<<v[i]<<" ";
}
out<<v[N - 1];
out<<"\n";
in.close();
out.close();
}