using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class Program { static void Main() { // Считываем размер массива, // который необходимо отсортировать int size; size = Convert.ToInt32(Console.ReadLine()); // Динамически выделяем память под // хранение массива размера size int[] a = new int [size]; //считываем строку string str = Console.ReadLine(); //разбиваем по пробелам string[] mas = str.Split(' '); //парсим в массив for (int i = 0; i < size; i++) { a[i] = int.Parse(mas[i]); } int step = size / 2;//инициализируем шаг. while (step > 0)//пока шаг не 0 { for (int i = 0; i < (size - step); i++) { int j = i; //будем идти начиная с i-го элемента while (j >= 0 && a[j] > a[j + step]) //пока не пришли к началу массива //и пока рассматриваемый элемент больше //чем элемент находящийся на расстоянии шага { //меняем их местами int temp = a[j]; a[j] = a[j + step]; a[j + step] = temp; j--; } } step = step / 2;//уменьшаем шаг } // Выводим отсортированный массив for (int i = 0; i < size; i++) { Console.Write(a[i]); Console.Write(' '); } } } }