Как работает Selection Sort?
Выбор сортировки реализует простой алгоритм сортировки следующим образом:
- Алгоритм многократно ищет нижний элемент.
- Заменить текущий элемент на элемент с самым низким значением
- С каждой итерацией / проходом выбора сортировки элементы меняются местами.
Java-программа для реализации выбора сортировки
- package com.guru99;
- public class SelectionSortAlgo {
- public static void main(String a[])
- {
- int[] myArray = {860,8,200,9};
- System.out.println("------Before Selection Sort-----");
- printArray(myArray);
- selection(myArray);//sorting array using selection sort
- System.out.println("-----After Selection Sort-----");
- printArray(myArray);
- }
- public static void selection(int[] array)
- {
- for (int i = 0; i < array.length - 1; i++)
- { System.out.println("Sort Pass Number "+(i+1));
- int index = i;
- for (int j = i + 1; j < array.length; j++)
- {
- System.out.println("Comparing "+ array[index] + " and " + array[j]);
- if (array[j] < array[index]){
- System.out.println(array[index] + " is greater than " + array[j] );
- index = j;
- }
- }
- int smallerNumber = array[index];
- array[index] = array[i];
- array[i] = smallerNumber;
- System.out.println("Swapping Elements: New Array After Swap");
- printArray(array);
- }
- }
- static void printArray(int[] array){
- for(int i=0; i < array.length; i++)
- {
- System.out.print(array[i] + " ");
- }
- System.out.println();
- }
- }
Вывод:
------Before Selection Sort----- 860 8 200 9 Sort Pass Number 1 Comparing 860 and 8 860 is greater than 8 Comparing 8 and 200 Comparing 8 and 9 Swapping Elements: New Array After Swap 8 860 200 9 Sort Pass Number 2 Comparing 860 and 200 860 is greater than 200 Comparing 200 and 9 200 is greater than 9 Swapping Elements: New Array After Swap 8 9 200 860 Sort Pass Number 3 Comparing 200 and 860 Swapping Elements: New Array After Swap 8 9 200 860 -----After Selection Sort----- 8 9 200 860