Pagini recente » Cod sursa (job #2076806) | Cod sursa (job #2964753) | Cod sursa (job #1377039) | Cod sursa (job #873030) | Cod sursa (job #644909)
Cod sursa(job #644909)
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<fstream>
using namespace std;
void shift(long *z,long r,long b) {
long a,m;
while((r*2)<b) {
if((r*2)==b)
m=r*2;
else
m=(z[r*2]>z[r*2+1])?r*2:r*2+1;
if(z[r]<z[m]) {
a=z[r];
z[r]=z[m];
z[m]=a;
r=m;
} else
break;
}
}
void sort(long *z,long N) {
long i,a;
for(i=N/2-1;i>=0;i--)
shift(z,i,N);
for(i=N-1;i>0;i--) {
a=z[0];
z[0]=z[i];
z[i]=a;
shift(z,0,i-1);
}
}
int main() {
long i,N,*z;
ifstream f("algsort.in");
// dimensiunea sirului pentru sortare
f>>N;
// aloca dinamic memoria pentru sortare
z=(long *)malloc(N*sizeof(long));
// Citeste in memorie elementele sirului din algsort.in
for(i=0;i<N;i++)
f>>z[i];
f.close();
// Realizeaza sortarea in memorie
sort(z,N);
// Scrie rezultatul sortarii in algsort.out
ofstream g("algsort.out");
for(i=0;i<N;i++)
g<<z[i]<<endl;
// Inchide fisierul algsort.out
g.close();
system("pause");
return 0;
}