Небольшая хитрость при сортировке: отсортировать массив в обе стороны при помощи одного алгоритма (и соответственно, одной и той же подпрограммы) можно, если при сортировке в непредусмотренную алгоритмом сторону, сначала умножить каждый элемент массива на -1, что поменяет его знак, а затем, после сортировки, снова умножить их на -1, вернув знак в первоначальное состояние.
Чтобы заполнить массив случайными числами нужно использовать генератор случайных чисел. Простейший генератор – rand()%N, где N – количество случайно получаемых чисел. Таким образом эта команда будет выдавать случайное число от 0 до N-1. Однако, в таком случае числа при каждом запуске будут одинаковыми. Чтобы числа отличались, следует проделать целый ряд действий. Сначала подключить библиотеку ctime. Затем использовать команду srand с аргументом time(0) (т.е. полностью строка выглядит как srand (time(0)); ). Эта строка, своего рода аналог команды randomize из Паскаля, включающая настоящую рандомизацию. И вот после неё уже можно полноценно использовать команду rand(), получая при каждом запуске разные числа.
Задание:
1. Реализовать все 4 изученных метода сортировки, а также заполнение массива и вывод его на экран, в виде отдельных подпрограмм.
2. Реализовать подсчёт выполненных действий каждой из сортировок. За отдельное действие следует считать каждое сравнение элементов и каждую перестановку их местами.
3. Реализовать меню, позволяющее пользователю выбрать метод и направление сортировки. Так же должен быть пункт, сортирующий один массив всеми методами и сравнивающий эффективность.
4. Зациклить программу до тех пор, пока пользователь не нажмёт «выход».
5. Написать отчёт.
Отчёт должен содержать: титульный лист (образец в конце методички), код программы, блок-схему и ответы на вопросы со следующей страницы.
Вопросы на защиту: