Cod sursa(job #1502854)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 15 octombrie 2015 02:11:23
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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() {

	int gaps[] = {701, 301, 132, 57, 23, 10, 4, 1};

	for(int ind = 0 ; ind < 8 ; ++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;
}