Pagini recente » Cod sursa (job #1962210) | Cod sursa (job #2641472) | Cod sursa (job #2779008) | Cod sursa (job #2717205) | Cod sursa (job #1502859)
#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;
}