Pagini recente » Cod sursa (job #943683) | Cod sursa (job #1746) | Autentificare | Cod sursa (job #207936) | Cod sursa (job #1276964)
#include <stdio.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define MAXN 500005
typedef unsigned int uint;
uint arr[ MAXN ],
n;
//functions prototype
void read();
void shell();
void write();
void swap(int,int);
int main() {
read();
shell();
write();
return(0);
};
void read() {
uint i;
freopen(FIN, "r", stdin);
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &arr[ i ]);
fclose( stdin );
};
void shell() {
uint i,
j,
v,
h = 1;
do {
h = 3 * h + 1;
} while(h <= n - 1);
do {
h /= 3;
for(i = h + 1; i < n; i++) {
v = arr[ i ];
j = i;
while( (j >= h) && (arr[ j - h ] > v)) {
arr[ j ] = arr[ j - h ];
j -= h;
}
arr[ j ] = v;
}
} while( h > 0);
};
void write() {
int i;
freopen(FOUT, "w", stdout);
for(i = 0; i < n; i++) printf("%d ", arr[ i ]);
fclose( stdout );
};