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

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

Сортировка вставками на языке программирования java не имеет никаких особенностей в реализации, поэтому я просто продемонстрирую код.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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();
        }

        //главный цикл
        for (int i = 0; i < size; i++)
        {
          int temp = a[i];// запомним i-ый элемент
          int j =i-1;//будем идти начиная с i-1 элемента
          while(j >= 0 && a[j] > temp)
          // пока не достигли начала массива
          // или не нашли элемент больше i-1-го
          // который храниться в переменной temp
          {
            a[j + 1] = a[j];
            //проталкиваем элемент вверх
            j--;
          }
          a[j + 1] = temp;
          // возвращаем i-1 элемент
        }    
        // Выводим отсортированный массив
        for (int i = 0; i < size; i++) {
            printWriter.print(a[i] + " ");
        }

        // После выполнения программы необходимо закрыть
        // потоки ввода и вывода
        scanner.close();
        printWriter.close();
    }
}

  • Ярослав

    В главном цикле счетчик і начинается с 0 и идет вверх (і++), а j, которьій зависит от і идет вниз (j—)
    Следовательно еще на етапе присвоения j получит значение -1 и ваша реализация вьілетит в трубу.

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

  • на Delphi

  • на Java

  • на C++