terranum
28 уровень
Milan

Кухня(); Второй сезон - 76/79

Пост из группы Архив info.javarush.ru
3786 участников
76. Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних элемента ai и аi+1. Если ai ≤ ai+1, то продвигаются на один элемент вперед. Если ai > ai+1, то производится перестановка и сдвигаются на один элемент назад. Составить алгоритм этой сортировки. Кухня ПРАВИЛА
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
terranum28 уровень, Milan
6 февраля 2015, 03:47
Так держать!!!
machet1k13 уровень
3 февраля 2015, 18:42
Спасибо! Никогда не писал сам сортировку Шелла.
Довольно, прикольненько)))
package com.javarush.test.forme.sortShell;

public class Solution
{
    public static void main(String[] args)
    {
        double[] calibres = new double[]{5.45, 7.62, 5.56, 14.7, 12.7, 11.43, 10.2, 9, 2.7};

        sortShell(calibres);

        for (double num : calibres)
        {
            System.out.println(num);
        }
    }

    private static void sortShell(double[] arr)
    {
        for (int i = 0; i < arr.length - 1; )
        {
            if (arr[i] > arr[i + 1])
            {
                double temp = arr[i]; // собстенно
                arr[i] = arr[i + 1];  // мать её
                arr[i + 1] = temp;    // перестановка
                if (i != 0) i--; // сдвигаемся на 1 элемент назад
            }
            else if (i != arr.length - 1) i++; // сдвигаемся на 1 элемент вперёд
        }
    }
}