Описание взято из книги "Алгоритмы и Струкуры данных" Никлаус Вирт :
Этот прием основан на следующих правилах:
На вход передается массив из целых чисел. В функции sortArray за минимальный элемент берется первый элемент массива. И далее этот элемент сравнивается со всеми идущими после него элементами. Если элемент меньше, чем текущий минимальный, то элементы массива меняются местами. Таким образом на первом месте ( с индексом 0) становится наименьший элемент из всего массива. Далее за минимальный берется второй элемент массива и опять сравнивается со всеми оставшимися и т.д.
В выполняемом файле MainClass.java в статическую функцию sortArray класса Sorting передается массив целых чисел. Этот массив сортируется по-убыванию. Так как каждый массив является ссылкой, создавать дополнительную копию данных не требуется. Элементы меняются напрямую в исходном массиве.
Класс Sorting содержит методы для сортировки массива целых чисел.
/**Класс для сортировки целочисленных массивов * Реализует алгоритм прямого выбора * @author Shpatserman Maria * @version 1.1 27.10.2010 */ public class Sorting { /**Метод сортировки массива по возрастанию * @param array массив для сортировки * */ static void sortArray(int[] array){ for (int i=0;i<(array.length-1);i++){ int minimumItem = array[i]; //Сравниваем элементы по индексу i и i+1, если второй меньше, то меняем их местами checkItemsWithMinimum(minimumItem,i,i+1,array); } } /**вспомогательный метод, для сравнения и перестановки элементов массива местами */ private static void checkItemsWithMinimum(int minimum,int minindex,int index,int[] array){ for(int i=index;i<array.length;i++){ if (minimum > array[i]){ array[minindex]=array[i]; array[i]=minimum; minimum=array[minindex]; } } } /**Метод позволяющий вывести все элементы массива * * @param array массив для вывода */ static void printArray(int[] array){ System.out.println("printArray"); for(int i=0;i<array.length;i++){ System.out.println("i = "+ i+" array[i] = "+array[i]); } } }
Пример вызова класса Sorting из выполняемого класса MainClass.
/**Тестовый класс для вызова метода сортировки * * @author Shpatserman Maria */ public class MainClass { /** * @param args the command line arguments */ public static void main(String[] args) { // Тестовый массив целых чисел int[] testArray = new int[] {-5,1,17,33,1,355,7,88,90,12,3,4,0,12}; Sorting.sortArray(testArray); Sorting.printArray(testArray); } }
Исходный текст программы: Sorting.java.
Пример выполняемого класса: MainClass.java.