Слайд 1Сортировка элементов линейного массива
Презентация 9-22
Слайд 2Заполнение массива
Функция y = RND(1) генерирует случайное число из интервала (0,1)
RND(1)*10- случайное
число из интервала (0,10)
INT(RND(1)*100) – случайное целое число из интервала
(0,100)
INT(RND(1)*50+80) – случайное целое число из интервала (80, 130)
RANDOMIZE TIMER– обновление базы случайных чисел
Слайд 3Заполнение массива
Заполнение массива произвольными целыми числами из промежутка (0; 100)
RANDOMIZE
TIMER
INPUT "Количество элементов"; K
DIM A(K)
FOR I=1 TO K
A(I)=INT(RND(1)*100)
PRINT "A("; I; ")="; A(I)
NEXT I
Слайд 4Сортировка элементов массива
Сортировка – один из наиболее распространенных процессов обработки данных.
Сортировкой
числового массива называют расположение его элементов в возрастающем или убывающем по
величине порядке.
Слайд 5Сортировка элементов массива
Под сортировкой массива подразумевается процесс перестановки элементов с целью
упорядочивания их в соответствии с каким-либо критерием.
Существует достаточно много методов
(алгоритмов) сортировки массивов. Рассмотрим метод прямого выбора и метод парных перестановок.
Слайд 6Метод прямого выбора
Алгоритм сортировки массива по возрастанию методом прямого выбора
может быть представлен так:
Просматривая массив с первого элемента, найти
минимальный и поменять его местами с первым элементом.
Просматривая массив со второго элемента, найти минимальный и поменять его местами со вторым элементом.
И, так далее, до последнего элемента.
Слайд 7Метод прямого выбора
Алгоритм использует вложенные циклы.
Внешний цикл (счетчик шагов)
последовательно выбирает номер элемента массива, куда следует записывать найденный в
неупорядоченной части массива минимальный элемент.
Внутренний цикл перебирает номера неупорядоченных элементов при поиске минимального элемента.
Для внешнего цикла достаточно шагов на один меньше, чем элементов в массиве.
Слайд 8Метод прямого выбора
Фрагмент программы, реализующий сортировку массива по возрастанию методом
прямого выбора
For i =1 To n–1
For j
= i+1 To n
If a(i) > a(j) Then Swap a(i), a(j)
Next j
Next i
Слайд 9Метод прямого выбора
Фрагмент программы, реализующий сортировку массива по возрастанию методом
прямого выбора
For i =1 To n–1
For j
= i+1 To n
If a(i) > a(j) Then
z = a(i)
a(i) = a(j)
a(j) = z
End if
Next j
Next i
Слайд 10Метод прямого выбора
Пример работы алгоритма:
Исходный массив: 8, 3, 6, 1,
4 (последовательно меняются местами 8 и 3, 3 и 1)
После
первого шага: 1, 8, 6, 3, 4 (меняются местами 8 и 6, 6 и 3)
После второго шага: 1, 3, 8, 6, 4 (меняются местами 8 и 6, 6 и 4)
После третьего шага: 1, 3, 4, 8, 6 (меняются местами 8 и 6)
После четвертого шага: 1, 3, 4, 6, 8
Слайд 11Метод парных перестановок (пузырьковый)
Смысл этого метода заключается в сравнивании соседних
элементов и, если нужно, их перестановке. Причём за один просмотр
всех пар сортировка не достигает нужного результата. Приходится просматривать все пары элементов несколько раз.
Если мы сортируем массив по возрастанию, то суть метода «пузырька» будет сводится к тому, что постепенно самые большие элементы будут "оседать" в конце массива, а меньшие - постепенно "всплывать" к его началу (как пузырьки воздуха в воде).
Слайд 12Метод парных перестановок (пузырьковый)
Алгоритм сортировки включает два цикла. Один вложен
в другой. За каждый повторений внешнего цикла самый большой элемент
в просматриваемом отрезке массива устанавливается в конец этого отрезка.
Во внутреннем цикле сравниваются соседние элементы. Если очередной больше следующего (при сортировке по возрастанию), то происходит их обмен.
Слайд 13Метод парных перестановок (пузырьковый)
Количество повторений внутреннего цикла равно количеству элементов
в массиве минус номер повторения внешнего. Так регулируется длина отрезка
массива, который необходимо просматривать. Счетчик внутреннего цикла - это индекс элемента массива.
Слайд 14Метод парных перестановок (пузырьковый)
Фрагмент программы, реализующий сортировку массива по возрастанию
методом «пузырька»
For i =1 To n–1
For j
= 1 To n–i
If a(j) > a(j+1) Then Swap a(j), a(j+1)
Next j
Next i
Слайд 15Метод парных перестановок (пузырьковый)
Фрагмент программы, реализующий сортировку массива по возрастанию
методом «пузырька»
For i =1 To n–1
For j
= 1 To n–i
If a(j) > a(j+1) Then
z = a(j)
a(j) = a(j + 1)
a(j + 1) = z
End if
Next j
Next i
Слайд 16Метод парных перестановок (пузырьковый)
1 3 5 2 4
Сравниваем первую пару
элементов. Числа 1 и 3 стоят в правильном порядке. Их переставлять
не надо. Делаем один шаг по массиву и сравниваем числа 3 и 5. Их тоже не надо переставлять. Делаем еще один шаг и сравниваем числа 5 и 2. Они стоят в неправильном порядке, поэтому мы их меняем местами.
Слайд 17Метод парных перестановок (пузырьковый)
1 3 2 5 4
Сдвигаемся еще на
один элемент и сравниваем числа 5 и 4. Они тоже
стоят неправильно, и мы меняем их местами.
1 3 2 4 5
Мы дошли до конца массива. Но массив пока неупорядочен. Поэтому мы возвращаемся к началу массива и продолжаем сравнение. Числа 1 и 3 идут в правильном порядке, а вот числа 3 и 2 порядок нарушают, поэтому мы меняем их местами.
Слайд 18Метод парных перестановок (пузырьковый)
1 2 3 4 5
Пройдя еще один
раз по всему массиву, мы убеждаемся, что все элементы стоят
на своих местах. Значит, процесс сортировки массива можно завершить.
Слайд 19Задачи
1. Составить программу сортировки числового массива по убыванию методом «пузырька».
Массив задать случайными числами в интервале от 0 до 100.
2.
На соревнованиях по прыжкам в длину получен массив b(n). Определить три лучших результата. Массив сформировать с помощью функции RND (диапазон прыжков от 120см до 200см).
Слайд 20Задачи
3. Составить программу сортировки числового массива по убыванию так, чтобы
осуществлялась сортировка:
1) четных элементов массива;
2) отрицательных элементов массива;
3) элементов, записанных на нечетных
местах.
4. Определить есть ли в массиве равные элементы. Вывести их на экран.