Урок 3

Сортировка массивов

На этом уроке мы научимся сортировать массивы.

Пусть у нас есть массив из 6-ти чисел.

array A[6]float=(6,5,4,3,2,1)

Замечание. Как поменять местами значения первого и второго элементов? Такой скрипт:

A[1]= A[2]
A[2]= A[1]

приведёт к тому, что оба элемента массива получат значения 5. Правильное решение такое:

X= A[1]
A[1]= A[2]
A[2]= X

Теперь напишем скрипт, который перебирает в цикле все соседние пары элементов, начиная с пары (1,2) и заканчивая парой (5,6). Если первый элемент в паре окажется больше второго, то меняем местами эти элементы массива

for i = 1,5 if A[i] > A[i+1] X=A[i] A[i]=A[i+1] A[i+1]=X

Запускаем этот скрипт и смотрим что получилось:

Сортировка массивов

Ну, вообще перестановка значений элементов массива произошла в правильном направлении. Максимальное значение «66» заняло последнюю позицию, а минимальное значение «11» сдвинулось с последнего места на предпоследнее. Повторим эту операцию ещё раз. Для этого выделите строку for i = 1,5 и нажмите «Продолжить».

Сортировка массивов

Минимальное значение «11» сдвинулось еще на одну позицию влево. Можно догадаться, что для завершения сортировки нужно выполнять данную операцию 5 раз. Для этого цикл перестановки пар элементов массива поместим в тело внешнего цикла for j = 1,5:

for j = 1,5
  for i = 1,5
    if A[i] > A[i+1]
      X=A[i]
      A[i]=A[i+1]
      A[i+1]=X

В режиме редактирования внесите соответствующие исправления и стартуйте скрипт

Сортировка массивов

Все получилось! Массив сортирован по возрастанию.

Этот метод сортировки называется пузырьковым методом, вероятно, из-за его аналогии с процессом всплытия пузырька воздуха в воде. Пузырьковый метод сортировки считается медленным, поскольку время его срабатывания пропорционально квадрату размера массива (из-за двойного цикла). Это может быть проблемой при работе с большими массивами. В таких случаях необходимо использовать встроенные функции сортировки, которые используют более эффективные алгоритмы. Пример использования встроенной функции мы разберём позднее.