Cod sursa(job #1503405)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 16 octombrie 2015 01:08:29
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <queue>
#include <cstring>
#include <ctime>
#include <algorithm>

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 combsort() {

	const double shrink = 1.3;
	
	int gap = N;

	bool swapped = true;

	while( ! (gap == 1 && swapped == false) ) {

		gap = int(gap / shrink);

		if(gap < 1) gap = 1;

		swapped = false;

		for(int i = 1; i + gap <= N; ++i)
			
			if(v[i] > v[i + gap]) {
				swapped = true;
				swap(v[i], v[i + gap]);
			}

	}
}

int main() {


	read();

	combsort();

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

	return 0;
}