Pagini recente » Cod sursa (job #1030019) | Cod sursa (job #3166125) | Cod sursa (job #3273309) | Cod sursa (job #884399) | Cod sursa (job #3001172)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int shellSort(int arr[], int n)
{
// Start with a big gap, then reduce the gap
for (int gap = n/2; gap > 0; gap /= 2)
{
// Do a gapped insertion sort for this gap size.
// The first gap elements a[0..gap-1] are already in gapped order
// keep adding one more element until the entire array is
// gap sorted
for (int i = gap; i < n; i += 1)
{
// add a[i] to the elements that have been gap sorted
// save a[i] in temp and make a hole at position i
int temp = arr[i];
// shift earlier gap-sorted elements up until the correct
// location for a[i] is found
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
// put temp (the original a[i]) in its correct location
arr[j] = temp;
}
}
return 0;
}
int main()
{
int v[500005],n;
fin>>n;
for(int i=0; i<n; i++)
fin>>v[i];
shellSort(v, n);
for(int i=0; i<n; i++)
fout<<v[i]<<" ";
return 0;
}