Pagini recente » Cod sursa (job #508164) | Cod sursa (job #3220339) | Cod sursa (job #508167) | Cod sursa (job #1399354) | Cod sursa (job #2596781)
#include <bits/stdc++.h>
#define BYTE(x) ((x >> (dv * 8)) & 255)
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int nums[500005];
void qSort(int lft, int rgt);
int position(int lft, int rgt);
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i){
fin >> nums[i];
}
qSort(1, n);
for(int i = 1; i <= n; ++i){
fout << nums[i] << " ";
}
return 0;
}
void qSort(int lft, int rgt){
if(lft >= rgt) return;
int p = position(lft, rgt);
qSort(lft, p - 1);
qSort(p + 1, rgt);
}
int position(int lft, int rgt){
int il = 1, ir = 0;
int pos = rand() % (rgt - lft + 1) + lft;
swap(nums[lft], nums[pos]);
while(lft < rgt){
if(nums[lft] > nums[rgt]){
swap(nums[lft], nums[rgt]);
swap(il, ir);
}
lft += il;
rgt -= ir;
}
return lft;
}