Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория ответы.doc
Скачиваний:
45
Добавлен:
24.12.2018
Размер:
1.61 Mб
Скачать
  1. Различные алгоритмы сортировок одномерного массива.

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

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

Алгоритм сортировки пузырьковым методом получил свое название от способа, ис­пользуемого для упорядочивания элементов массива. Здесь выполняются повторяющие­ся операции сравнения и при необходимости меняются местами смежные элементы. При этом элементы с меньшими значениями постепенно перемещаются к одному концу мас­сива, а элементы с большими значениями — к другому. Этот процесс напоминает пове­дение пузырьков воздуха в резервуаре с водой. Пузырьковая сортировка выполняется путем нескольких проходов по массиву, во время которых при необходимости осуществ­ляется перестановка элементов, оказавшихся "не на своем месте". Количество проходов, гарантирующих получение отсортированного массива, равно количеству элементов в массиве, уменьшенному на единицу.

В следующей программе реализована сортировка массива (целочисленного типа), со­держащего случайные числа. Эта программа заслуживает внимательного разбора.

// Использование метода пузырьковой сортировки

// для упорядочения массива.

#include <iostream>

#include <cstdlib>

using namespace std;

int main() {

int nums[10]; int a, b, t; int size;

size = 10; // Количество элементов, подлежащих

// сортировке.

// Помещаем в массив случайные числа.

for(t=0; t<size; t++) nums[t] = rand();

// Отображаем исходный массив.

cout << "Исходный массив: ";

for(t=0; t<size; t++) cout<< nums[t]<<' ';

cout << '\n';

// Реализация метода пузырьковой сортировки.

for(a=l; a<size; a++)

for (b=size-l; b>=a; b--) {

if(nums[b-l] > nums[b]) { // Элементы неупорядочены.

// Меняем элементы местами.

t = nums[b-1];

nums[b-l] = nums[b];

nums[b] = t; } } // Конец пузырьковой сортировки.

// Отображаем отсортированный массив.

cout << "Отсортированный массив: ";

for(t=0; t<size; t++) cout<<nums[t]<< ' ';

return 0; }

Хотя алгоритм пузырьковой сортировки пригоден для небольших массивов, для массивов большого размера он становится неэффективным. Более универсальным считается алгоритм Quicksort. В стандартную библиотеку C++ включена функция qsort (), кот» рая реализует одну из версий этого алгоритма. Но, прежде чем использовать ее, вам необходимо изучить больше средств C++. (Подробно функция qsort () рассмотрена в главе 20.)