Pagini recente » Cod sursa (job #2102258) | Cod sursa (job #233947) | Cod sursa (job #2663366) | Cod sursa (job #685496) | Cod sursa (job #660626)
Cod sursa(job #660626)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int N, v[ 1 << 21 ], gaps[16] ;;
void shell_sort( int *v) {
for( int i = 14; i >= 0; i-- )
gaps[i ] = gaps[i+1] *2.25 + 1;
for( int j = 0; j < 16; ++j) {
if( gaps[ j ] > N ) continue;
for( int k = gaps[j]; k < N; ++k) {
int poz = k;
while ( poz >= gaps[ j ] && v[ poz ] < v[ poz - gaps[j]] ){
swap(v[poz], v[poz-gaps[j]]);
poz = poz - gaps[j];
}
}
}
}
int main() {
fin>>N;
for (int i=0;i<N;i++) fin>>v[i];
shell_sort(v);
//sort(v,v+N);
for (int i=0;i<N;i++) fout<<v[i]<<' ';
return 0;
}