Pagini recente » Cod sursa (job #1604064) | Cod sursa (job #798944) | Profil RolandPetrean | Cod sursa (job #1769946) | Cod sursa (job #260018)
Cod sursa(job #260018)
#include <stdio.h>
#define DIM 500001
int n,i;
int v[DIM];
void cre(int *v, int n);
void corect(int poz, int *v, int n);
void s(int *v, int n) ;
int main(){
FILE *f = fopen("algsort.in","r");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fclose(f);
s(v,n);
FILE *g = fopen("algsort.out","w");
for (i=1;i<=n;i++)
fprintf(g,"%d ",v[i]);
fclose(g);
return 0;
}
void cit(int *v, int &n){
int i;
FILE *f = fopen("date.in","r");
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
fclose(f);
}
void cre(int *v, int n){
int i,aux,c,p;
for (i=2;i<=n;i++) {
c = i;
p = i>>1;
while ((p)&&(v[c]>v[p])) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
c = p;
p = p>>1;
}
}
}
void corect(int poz, int *v, int n){
int aux,p,c;
p = poz;
c = p<<1;
while (c<=n) {
if ((c+1<=n) && (v[c+1]>v[c]))
c++;
if (v[c]>v[p]) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
p = c;
c = p<<1;
} else break;
}
}
void s(int *v, int n) {
int i,aux,p,c;
cre(v,n);
for (i=n;i>1;i--) {
aux = v[1];
v[1] = v[i];
v[i] = aux;
corect(1,v,i-1);
}
}