Cod sursa(job #660393)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 12 ianuarie 2012 20:42:54
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<algorithm>

using namespace std;

ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int N;
int v[ 1 << 21 ];

void shell_sort( int *v) {
   int gaps[16] ;

    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;
}