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



76. Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних элемента ai и аi+1. Если ai ≤ ai+1, то продвигаются на один элемент вперед. Если ai > ai+1, то производится перестановка и сдвигаются на один элемент назад. Составить алгоритм этой сортировки.

Кухня ПРАВИЛА

2 комментария

machet1k
  • machet1k
  • +1
  • Комментарий отредактирован 2015-02-03 18:42:57 пользователем machet1k
Спасибо! Никогда не писал сам сортировку Шелла.
Довольно, прикольненько)))
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 элемент вперёд
        }
    }
}
terranum
Так держать!!!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.