Pagini recente » Cod sursa (job #78440) | Cod sursa (job #791478) | Cod sursa (job #339774) | Cod sursa (job #2354382) | Cod sursa (job #508013)
Cod sursa(job #508013)
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <ctime>
using namespace std;
int a[500001];
int Partition(int st, int dr){
int p=rand()%(dr-st+1);
p+=st;
swap(a[st],a[p]);
p=a[st];
int i, j;
i=st, j=dr;
while(i<j){
if ( a[i]>p ){
swap(a[i],a[j]);
j--;
}
else ++ i;
}
if (a[i]>p){
--j, -- i;
}
swap(a[st],a[i]);
return i;
}
void quick(int l, int r){
if(r - l > 0){
int q = Partition(l, r);
quick(l, q-1);
quick(q+1, r);
}
}
int main(){
srand(time(NULL));
ifstream f("algsort.in");
ofstream g("algsort.out");
int i = 0, n;
f>>n;
for(i = 0; i < n; i++)
f>>a[i];
quick(0, n-1);
for(i = 0; i < n; i++)
g<<a[i]<<" ";
g<<'\n';
g.close();
return 0;
}