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

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

Приведем пример реализации алгоритма сортировки выбором. На вход алгоритму подается массив чисел типа int, заданный своим размером и элементами. В результате работы алгоритм выводит отсортированный массив. Заметим, что приведенная реализация алгоритма является устойчивой, т.е. она не меняет относительный порядок элементов с одинаковыми значениями.

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
52
53
54
55
56
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++) {
            // Найдем минимальный элемент на
            // промежутке индексов [i; size);
            // изначально его индекс равен i
            int minValueIndex = i;

            // Переберем оставшиеся элементы промежутка
            for (int j = i + 1; j < size; j++) {
                // Если элемент в позиции j меньше
                // элемента в позиции minValueIndex, то
                // необходимо обновить значение индекса
                if (a[j] < a[minValueIndex]) {
                    minValueIndex = j;
                }
            }

            // Меняем текущий элемент с минимальным
            int temp = a[i];
            a[i] = a[minValueIndex];
            a[minValueIndex] = temp;
        }

        // Выводим отсортированный массив
        for (int i = 0; i < size; i++) {
            printWriter.print(a[i] + " ");
        }

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

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

  • на Delphi

  • на Java

  • на C++