Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Excel.doc
Скачиваний:
21
Добавлен:
03.05.2019
Размер:
1.48 Mб
Скачать

2. Сортировка данных

Алгоритмы сортировки данных являются одними из лучших примеров для обучения программированию логически ветвящихся процессов.

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

Для числовых данных понятия “возрастания” и “убывания” обычно относятся непосредственно к значению чисел - для любой пары натуральных или вещественных чисел определены отношения порядка типа “больше” и “меньше”.

Для символьных данных понятия “возрастания” и “убывания” относятся к числовым значениям внутримашинного кода, используемого для представления символов в памяти компьютера. Так как все буквенные символы располагаются в таблице кодов по алфавиту, то сортировка слов текста всегда приводит к их упорядочению в алфавитной (лексикографической) последовательности.

Отсортировать последовательность чисел можно точно таким же способом, как и последовательность строк текста. Нужно только уметь определять какой из элементов пары “больше” (“не меньше”) другого.

Сформулируем постановку задачи сортировки данных в наиболее простой и понятной форме - для внутренней (в оперативной памяти) сортировки одномерного числового массива по возрастанию (неубыванию).

ЗАДАЧА. Имеется одномерный массив чисел, состоящий из n элементов: A[n]. Требуется найти (создать) такую перестановку элементов массива, при которой их значения располагаются в порядке возрастания (неубывания), т.е. для любой пары элементов A[i] и A[i+1] выполняется неравенство вида:

A[i] <= A[i+1]

Наиболее известными и хорошо описанными в литературе алгоритмами сортировки являются следующие:

  • 1. Метод сортировки обменами (алгоритм “пузырька”).

  • 2. Метод сортировки вставками.

  • 3. Метод сортировки выбором элемента.

  • 4. Метод разделения (алгоритм “быстрой” сортировки).

  • 5. Метод “пирамиды”.

Главным показателем качества алгоритма внутренней сортировки является скорость сортировки (“трудоемкость”). Первые три алгоритма не имеют большой практической ценности и обладают слишком большой трудоемкостью, при этом очень просты для программирования и тем хороши для обучения.

Алгоритмы “пирамиды” и “быстрой” сортировки обеспечивают высокую скорость сортировки и находят широкое практическое применение.

2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)

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

Программа реализации алгоритма сортировки приведена ниже в Лабораторной работе 3.