Pagini recente » Cod sursa (job #386563) | Cod sursa (job #2081046) | Cod sursa (job #1801798) | Cod sursa (job #2833252) | Cod sursa (job #1503405)
#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;
}