Сортировка Шелла (реализация на Java)

Java   24 февраля 2012  Автор статьи:  

Реализация сортировки Шелла в языке программирования java не имеет никаких особенностей. Можно прям взять код из статьи Сортировка Шелла (реализация на C++).

import java.io.PrintWriter;
import java.util.Scanner;

public class Solution {
public static void main(String[] args) {
// Для считывания данных воспользуемся классом Scanner
// Для вывода - классом PrintWriter(как и во всех статьях по алгоритмам)
Scanner scanner = new Scanner(System.in);
PrintWriter printWriter = new PrintWriter(System.out);

// Считываем размер массива,
// который необходимо отсортировать
int size = scanner.nextInt();

// Создаем массив размера size
// для хранения чисел
int[] a = new int[size];

// Считываем массив
for (int i = 0; i < size; i++) { a[i] = scanner.nextInt(); } 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++) { printWriter.print(a[i] + " "); } // После выполнения программы необходимо закрыть // потоки ввода и вывода scanner.close(); printWriter.close(); } }

  • Kasmarkel

    Спасибо. Пригодилось.

  • Kasmarkel

    Спасибо. Пригодилось.

  • Кирилл

    Спасибо.
    Небольшая ошибка у вас.

    42 строка должна быть j -= step;

Научиться программировать

  • на Delphi

  • на Java

  • на C++