Cod sursa(job #1502856)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 15 octombrie 2015 02:15:30
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int NMAX = 500001;

int N;

int v[NMAX]; 

void read() {

	fin >> N;
	
	for(int i = 1 ; i <= N; ++i)
		fin >> v[i];
}

void shellsort() {

	const int gaps[] = {1, 9, 34, 182, 836, 4025, 19001, 90358, 428481};

	for(int ind = 8 ; ind >= 0 ; --ind) {

		int gap = gaps[ind];

		for(int i = gap ; i <= N; ++i) {

			int temp = v[i];

			int j;
			
			for(j = i; j > gap && v[j - gap] >= temp; j -= gap)
				v[j] = v[j - gap];

			v[j] = temp;
			
		}
	}
}


int main() {


	read();

	shellsort();

	for(int i = 1; i <= N; i++)
		fout << v[i] << " ";

	return 0;
}