Задания

  1. Создать табличку для любого массива, в котором последовательно прописать значения i, j, массива для  каждого цикла алгоритма сортировки пузырька. Используйте debugger. Например для массива 0 2 5 3 4:
    i j Значение массива Выполнился ли блок if?
    0 4  0 2 5 3 4 -
    0 3  0 2 3 5 4 +
    0 2  0 2 3 5 4 -
    0 1  0 2 3 5 4 -
    1 4  0 2 3 4 5 +
    1 3  0 2 3 4 5 -
    1 2  0 2 3 4 5 -
    2 4  0 2 3 4 5 -
    2 3  0 2 3 4 5 -
    3 4  0 2 3 4 5 -
    4 -  0 2 3 4 5 -
  2. Изменить программу сортировки пузырьком: 
    а) добавить возможность досрочного окончания сортировки; 
    б) программа написана таким образом, что минимальный элемент "всплывает" в начало массива. Измените программу так чтобы минимальный элемент "всплывал" в конец массива (внутренний цикл for должен перебирать элементы не с конца, а с начала).
    public class BubbleSorter {
        public static void sort(int[] array) {
            for (int i = 0; i < array.length; i++) {            
                for (int j = array.length - 1; j > i; j--) {     
                    if (array[j - 1] > array[j]) {
                        int tmp = array[j - 1];
                        array[j - 1] = array[j];
                        array[j] = tmp;
                    }
                }
            }
        }
    }
  3. Сделать задание 1 для алгоритма сортировки выбора.
  4. Изменить сортировку выбором - исключите обмен значений, если найденный минимальный элемент уже находится на своем месте.
    public class SelectionSorter {
        public static void sort(int[] array) {
            for (int i = 0; i < array.length; i++) {    // i - номер текущего шага
                int pos = i;
                int min = array[i];
                // цикл выбора наименьшего элемента
                for (int j = i + 1; j < array.length; j++) {
                    if (array[j] < min) {
                        pos = j;    // pos - индекс наименьшего элемента
                        min = array[j];
                    }
                }
                array[pos] = array[i];
                array[i] = min;    // меняем местами наименьший с array[i]
            }
        }
    }
Read also:
Comments