byte[] bytes = File.ReadAllBytes("file.txt");
ulong gap = (ulong)bytes.Length;
bool swapped = false;
while ((gap > 1) || swapped)
{
gap = (ulong)(gap / 1.2473309);
if (gap < 1) gap = 1;
ulong i = 0;
ulong m = gap;
swapped = false;
while (m < (ulong)bytes.Length)
{
if (bytes[i] > bytes[m])
{
swapped = true;
byte t = bytes[i];
bytes[i] = bytes[m];
bytes[m] = t;
}
i++;
m = i + gap;
}
}