Pagini recente » Cod sursa (job #1966877) | Cod sursa (job #9822) | Cod sursa (job #1980515) | Cod sursa (job #506655) | Cod sursa (job #505625)
Cod sursa(job #505625)
#include <fstream>
#include <cstdlib>
#include <algorithm>
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;
}