Программирование. Pascal ABC. Массивы. Сортировка


Чтобы посмотреть презентацию с оформлением и слайдами, скачайте ее файл и откройте в PowerPoint на своем компьютере.
Текстовое содержимое слайдов:

Массивы-3Сортировка Сортировка элементов массиваИдея сортировки: перестановка элементов массива так, чтобы они располагались либо по возрастанию, либо по убыванию.То есть, например, из массиваполучить отсортированный (по возрастанию)52-170-43-4-102357 Сортировка элементов массиваКак видно из предыдущего слайда, сортировка относится к преобразованию элементов массива. Заполнять массив будем случайными числами, выводить в строчку. Общая задача выглядит так:Алгоритмов сортировок много, но мы рассмотрим подробнее один – сортировка обменом. Сортировка обменомИдея сортировки обменом состоит в следующем (сортировать будем по возрастанию):На первом шаге сравниваем все элементы начиная со второго со значением первого элемента. Если наш элемент оказался меньше первого, то меняем элементы местами.В результате такого прохода на первом месте окажется самый малый по значению элемент. Сортировка обменом52-170-43После одного прохода первый элемент встал на свое место.Теперь нужно совершить подобный проход со вторым элементом, затем с третьим и т.д.Проделайте подобные проходы в тетради.Сколько минимум проходов нужно сделать для получения конечного результата?fillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.onfillcolorfill.typefill.on

Сортировка обменом: циклыИтак, если количество элементов в общем случае равно N, то мы должны совершить N-1 проходов – это сделаем циклом.В каждом проходе мы движемся с заданного элемента до конца массива – и на каждый проход тоже потребуется свой цикл!Таким образом у нас получается цикл прохода внутри цикла по количеству таких проходов. Сортировка обменом: циклыДанная ситуация очень схожа с вашей учебной неделей – цикл по урокам находится внутри цикла учебных дней недели:Понедельник: 1, 2, 3, 4, 5, …Вторник: 1, 2, 3, 4, 5, …Обратите внимание, что в первом цикле «Понедельник» урок может принимать не только первое значение, но и 2, 3, 4 и т.д., следовательно для цикла в цикле нужны две разные переменные, например, i и j. Сортировка обменом: циклыВнешний цикл описывает количество проходов: их от 1 до N-1:for i:=1 to N-1 doВнутренний цикл должен начинаться с i+1-го элемента (следующего за i-м) и совершать проход до конца массива:for j:=i+1 to N doВнутри этих циклов проверяется условие и при его выполнении совершается обмен элементов. Остановимся на обмене подробнее. Сортировка: обмен элементовЕсли попробовать напрямую сменить элементы местами, например, 1 и 3, то ничего не выйдет:a[1]:=a[3];a[3]:=a[1];При попытке такого обмена значение первого элемента бесследно теряется, поэтому это значение нужно где-то запомнить.Первый элемент становится равен третьемуА третий элемент равен первому, т.е. снова самому себе Сортировка: обмен элементовДля обмена элемента используется метод третьего кармана, в качестве которого для хранения значения первого элемента используется некоторая временная (temp) переменная, тип ее такой же как и тип элементов массива:t:=a[1];a[1]:=a[3];a[3]:=t;Запоминаем первый элемент (в t)Заменяем 1-ый элемент на 3-ийНа место 3-го ставим 1-ый (из t) Сортировка обменомСоберем все идеи в одно целое и решим задачу для сортировки по возрастанию массива, сформированного из 10 целых случайных чисел в диапазоне от 5 до 30.Запишем начало программы:program z;var a:array[1..10] of integer; i,j,t:integer;Переменные для цикловПеременные для цикловПеременная для обмена элементов

Сортировка обменомТеперь запишем два первых шага работы с массивом – формирование и вывод:begin for i:=1 to 10 do a[i]:=random(26)+5; for i:=1 to 10 do write(a[i]:4); writeln;
Сортировка обменомА далее – сортировка по возрастанию: for i:=1 to 9 do for j:=i+1 to 10 do if a[i]>a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;до N-1 элементовдо последнегос 1-госо следующегоесли заданный элемент больше проходимого обмен элементов



Сортировка обменомИ в конце выводим результат для сравнения первоначального массива с отсортированным: for i:=1 to 10 do write(a[i]:4); writeln;end.Итак, наша задача решена!Переходим к другим…
ЗаданияОтсортировать массив по убыванию.Отсортировать массив по возрастанию от третьего элемента по седьмой.*Отсортировать массив по возрастанию с начала и по максимальный элемент массива.


Массив, сформированный из 12 целых чисел в диапазоне от -25 до 40, отсортировать по убыванию.
В массиве из 20 целых чисел в диапазоне от 0 до 60 определить количество элементов, записанных после максимального элемента.
Сформировать массив, состоящий из 18 целых чисел в диапазоне от 10 до 30. Отсортировать массив по возрастанию от первого до максимального элемента.
Массив, сформированный из 14 целых чисел в диапазоне от -20 до 50, отсортировать по убыванию.
В массиве из 10 целых чисел в диапазоне от 0 до 50 определить количество элементов, записанных перед максимальным элементом.
Сформировать массив, состоящий из 19 целых чисел в диапазоне от 10 до 30. Отсортировать массив по убыванию от первого до минимального элемента.
Массив, сформированный из 20 целых чисел в диапазоне от -15 до 60, отсортировать по убыванию.
В массиве из 15 целых чисел в диапазоне от 0 до 40 определить количество элементов, записанных после минимального элемента.
Сформировать массив, состоящий из 11 целых чисел в диапазоне от 10 до 30. Отсортировать массив по убыванию от максимального до последнего элемента.
Массив, сформированный из 15 целых чисел в диапазоне от -10 до 30, отсортировать по убыванию.
В массиве из 12 целых чисел в диапазоне от 0 до 30 определить количество элементов, записанных перед максимальным элементом.
Сформировать массив, состоящий из 13 целых чисел в диапазоне от 10 до 30. Отсортировать массив по возрастанию от минимального до последнего элемента.
Массив, сформированный из 18 целых чисел в диапазоне от 0 до 20, отсортировать по убыванию.
В массиве из 19 целых чисел в диапазоне от 0 до 20 определить количество элементов, записанных после максимального элемента.
Сформировать массив, состоящий из 17 целых чисел в диапазоне от 10 до 30. Отсортировать массив по возрастанию от первого до максимального элемента.
Массив, сформированный из 9 целых чисел в диапазоне от 10 до 80, отсортировать по убыванию.
В массиве из 17 целых чисел в диапазоне от 0 до 10 определить количество элементов, записанных перед максимальным элементом.
Сформировать массив, состоящий из 15 целых чисел в диапазоне от 10 до 30. Отсортировать массив по убыванию от первого до минимального элемента.
Массив, сформированный из 10 целых чисел в диапазоне от 5 до 45, отсортировать по убыванию.
В массиве из 11 целых чисел в диапазоне от 0 до 55 определить количество элементов, записанных после минимального элемента.
Сформировать массив, состоящий из 10 целых чисел в диапазоне от 10 до 30. Отсортировать массив по в убыванию от максимального до последнего элемента.
Массив, сформированный из 13 целых чисел в диапазоне от -5 до 35, отсортировать по убыванию.
В массиве из 13 целых чисел в диапазоне от 0 до 35 определить количество элементов, записанных перед минимальным элементом.
Сформировать массив, состоящий из 20 целых чисел в диапазоне от 10 до 30. Отсортировать массив по возрастанию от минимального до последнего элемента.

Приложенные файлы

  • pptx 16Massivy3
    Размер файла: 79 kB Загрузок: 2
  • docx ZadanieMassiv3
    Размер файла: 13 kB Загрузок: 2