Главная страница
Навигация по странице:

  • Дата 08.12.2022 Класс

  • Цели обучения, которые достигаются на данном уроке (ссылка на учебную программу)

  • Этапы урока Деятельность учителя Деятельность обучающихся

  • Организационный момент. Проверка присутствующих по списку . Вступительная часть

  • Ноутбук. Планшет После этого определим через монеты какой команда будет первым или вторым. Проверка прошлый урок через игры “

  • 8 методов сортировок Python и их процесс работы

  • Сортировка выбором в Питоне Суть сортировки

  • Шаги к правильному решению Создадим функцию selection _ sort

  • Проверка знаний: ученкам стоит ввести порядок код программы ссылаясь примерам.

  • Задание

  • Методы сортировки. Методы сортировки


    Скачать 90.53 Kb.
    НазваниеМетоды сортировки
    Дата19.02.2023
    Размер90.53 Kb.
    Формат файлаdocx
    Имя файлаМетоды сортировки.docx
    ТипУрок
    #944192




    Раздел




    ФИО педагога

    Мешелов С.С.

    Дата

    08.12.2022

    Класс 

    Количество присутствующих:

    отсутствующих:

    Тема урока

    Методы сортировки

    Цели обучения, которые достигаются на данном уроке (ссылка на учебную программу)


    10.5.1.4 реализовывать алгоритмы сортировки для решения практических задач

    Цель урока

    знать методы сортировки:

    знать алгоритм сортировки методом выбора;

    писать алгоритм для выполнения сортировки методом выбора;


    Критерии успеха

    создает массив;

    присваивает значения для элементов массива;

    выводит значения элементов массива на экран;

    выполняет арифметические операции, используя значения элементов массива;

    умеет писать алгоритм для выполнения сортировки методом

    Ход урока

    Этапы урока

    Деятельность учителя

    Деятельность обучающихся

    Оценивание

    Ресурсы

    Организационный этап

    Организационный момент.

    Проверка присутствующих по списку.

    Вступительная часть:

    Перед началом урока сразу делим на две команды. Используя метод «Puzzle»:

    Группа будут разделены на 2 команды по методам пазла. На две конверты разложены фрагмент изображения. Каждая команда выбирают конверт и собирают пазла, которая выходит название каждый команды. В итоге выходит ноутбук или планшет, в зависмости от конверта.

    1. Ноутбук.

    2. Планшет

    После этого определим через монеты какой команда будет первым или вторым.

    Проверка прошлый урок через игры Memory: соедините слово с его значением

    1:Одномерный массив – это именованная последовательность, состоящая из пронумерованных элементов одного типа. 

    0:Двумерный массив - это набор однотипных данных, имеющий общее имя, доступ к элементам которого осуществляется по двум индексам.


    Показывают решения задач, при возникновении вопросов разбирают с учителем

    Интерактивное обучение

    Диалогическое обучение

    Саморегулируемое обучение

    Критическое мышление

    Изучение нового материала

    ткрытие новых знаний. Объяснение учителя

    • Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …).

    • Задача: переставить элементы массива в порядке возрастания.

    • Алгоритмы:

      1. сортировка обменом – «пузырьковая»

      2. сортировка выбором

      3. сортировка вставками

      4. сортировка подсчетом

    8 методов сортировок Python и их процесс работы

      1. Пузырьковая сортировка(Bubble Sort Algorithm)

      2. Выборочная сортировка(Selection Sort Algorithm)

      3. Сортировка вставками(Insertion Sort Algorithm)

      4. Быстрая сортировка(Quick Sort Algorithm)

      5. Сортировка слиянием(Merge Sort Algorithm)

      6. Сортировка по сегментам(Bucket Sort Algorithm)

      7. Сортировка Шелла(Shell Sort Algorithm)


     Будем исходить из того, что сначала лучше делать перестановки элементов массива на большом расстоянии. Предположим, что у нас есть п элементов и известно, что они уже отсортированы в обратном порядке. Тогда за n/2 обменов можно отсортировать их как нужно — сначала поменять местами первый и последний, а затем последовательно двигаться с двух сторон к центру. Хотя это справедливо только тогда, когда порядок элементов обратный, подобная идея положена в основу алгоритма Quicksort.

    Пусть дан массив А из n элементов. Выберем сначала наугад любой элемент массива (назовем его X). Обычно выбирают средний элемент массива, хотя это необязательно. На первом этапе мы расставим элементы так, что слева от некоторой границы находятся все числа, меньшие или равные X, а справа — большие или равные X:



    Заметим, что элементы, равные X, могут находиться в обеих частях.

    Теперь элементы расположены так, что ни один элемент из первой части при сортировке не окажется во второй части и наоборот. Поэтому далее достаточно отсортировать отдельно каждую часть массива. Такой подход называют «разделяй и властвуй» (англ, divide and conquer).

    Лучше всего выбирать X так, чтобы в обеих частях было равное количество элементов. Такое значение X называется медианой массива. Однако для того, чтобы найти медиану, надо сначала отсортировать массив, т. е. заранее решить ту самую задачу, которую мы собираемся решить этим способом. Поэтому обычно в качестве X выбирают средний элемент массива.

    Сначала будем просматривать массив слева до тех пор, пока не обнаружим элемент, который больше X (и, следовательно, должен стоять справа от X). Затем просматриваем массив справа до тех пор, пока не обнаружим элемент, меньший X (он должен стоять слева от X). Теперь поменяем местами эти два элемента и продолжим просмотр до тех пор, пока два «просмотра» не встретятся где-то в середине массива. В результате массив окажется разбитым на 2 части: левую со значениями, меньшими или равными X, и правую со значениями, большими или равными X. На этом первый этап («разделение») закончен. Затем такая же процедура применяется к обеим частям массива до тех пор, пока в каждой части не останется по одному элементу (таким образом, массив будет отсортирован).

    Чтобы понять сущность метода, рассмотрим пример. Пусть задан массив:



    Выберем в качестве X средний элемент массива, т. е. 67. Найдем первый слева элемент массива, который больше или равен X и должен стоять во второй части. Это число 78. Обозначим индекс этого элемента через L. Теперь находим самый правый элемент, который меньше X и должен стоять в первой части. Это число 34. Обозначим его индекс через R:



    Теперь поменяем местами эти два элемента. Сдвигая переменную L вправо, a R — влево, находим следующую пару, которую надо переставить. Это числа 82 и 44:



    Следующая пара элементов для переноски - числа 67 и 55:



    После этой перестановки дальнейший поиск приводит к тому, что переменная L становится больше R:



    В результате все элементы массива, расположенные левее A[L], меньше или равны X, а все элементы правее А[R] — больше или равны X.

    Теперь нужно применить тот же алгоритм к двум полученным частям массива: первая часть — с 1-го элемента до R-ro элемента, вторая часть — с L-ro до последнего элемента. Как вы знаете, такой приём называется рекурсией.

    Чтобы не загромождать решение деталями оформления, которые сильно различаются в школьном алгоритмическом языке и в Паскале, предположим, что в нашей программе один глобальный массив А с индексами от 1 до N, который нужно сортировать. Термин «глобальный» означает, что массив доступен всем процедурам и функциям. Глобальные данные объявляются выше основной программы:



    Тогда процедура сортировки принимает только два параметра, ограничивающие её «рабочую зону»: nStart — номер первого элемента, и nEnd — номер последнего элемента. Если nStart = nEnd, то в «рабочей зоне» один элемент и сортировка не требуется, т. е. нужно выйти из процедуры. В этом случае рекурсивные вызовы заканчиваются.

    Приведём полностью процедуру быстрой сортировки на школьном алгоритмическом языке:



    Для того чтобы отсортировать весь массив, нужно вызвать эту процедуру так:

    qSort(l, N)

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

    Для того чтобы уменьшить вероятность худшего случая, в алгоритм вводят случайность: в качестве X на каждом шаге выбирают не середину рабочей части массива, а элемент со случайным номером:

    X:=А[irand(L,R)]

    В таблице 8.1 сравнивается время сортировки (в секундах) массивов разного размера, заполненных случайными значениями, с использованием трёх изученных алгоритмов.



    Как показывают эти данные, преимущество быстрой сортировки становится подавляющим при увеличении N.

    Сортировка выбором в Питоне

    Суть сортировки

    • В неотсортированном подмассиве ищется локальный максимум (минимум).

    • Найденный максимум (минимум) меняется местами с последним (первым) элементом в подмассиве.

    • Если в массиве остались неотсортированные подмассивы

    Шаги к правильному решению

    Создадим функцию selection_sort, которая принимает на вход список.

    Внутри функции создадим цикл с переменной i, которая будет исчисляться с 0 до (длины списка - 1)

    Создадим переменную smallest = i.

    Создадим внутренний цикл с переменной от i + 1 до (длины списка - 1).

    Внутри этого цикла, если j-элемент (элемент под индексом j) меньше, чем элемент с индексом smallest, тогда устанавливаем smallest = j.

    После завершения внутреннего цикла меняем местами элементы под индексами i и smallest.

    Код программы в Питоне:

    def selection_sort(alist):

    for i in range(0, len(alist) - 1):

    smallest = i

    for j in range(i + 1, len(alist)):

    if alist[j] < alist[smallest]:

    smallest = j

    alist[i], alist[smallest] = alist[smallest], alist[i]

    alist = input('Enter the list of numbers: ').split()

    alist = [int(x) for x in alist]

    selection_sort(alist)

    print('Sorted list: ', end='')

    print(alist)
    Проверка знаний: ученкам стоит ввести порядок код программы ссылаясь примерам.

    Следующая игра «Вызов себе» является логического типа и цель этой игры это запомнить теги слов, которые мы использовали на данный урок.
    Дескрипторы:

    - умеют различать виды сортировок в Питоне;

    - умеют рассказать как работает метод прямого выбора по возрастанию;

    - узнали как работает циклы for, while и if в метод прямого выбора;

    умеют писать код программы массив и одномерный массив.

    Задание

    Теоретическая часть:

    Уровень А.

    1. Записать в тетради названия методов сортировки, не менее 6 (презентация 10-8Pb_Паскаль-II/параграфы 64,65/ слайды 36, 46, 59).
    2. Записать в тетради фрагменты программы простых методов сортировки: метод пузырь и метод выбора (презентация 10-8Pb_Паскаль-II/параграфы 64,65/ слайды 40, 43).

    Уровень В, С.

    3. Оценить эффективность методов сортировки, заполнив сравнительную таблицу по материалам презентации в тетради (презентация 10-8Pb_Паскаль-II/параграфы 64,65):


    Анализируют правило 1-3

    Ознакамливаются с методами решения

    Разбирают совместно с учителем понятие

    Словесная оценка учителя

    . Взаимооценивание

    Стратегия «Стикер

    Критическое мышление.

    Саморегулируемое обучение (самонаправленность в процессе работы над заданиями).

    Рефлексия

    Повторить формулы и определения по теме: «Погрешности»

    В конце урока учащиеся проводят рефлексию:

    - что узнал, чему научился

    - что осталось непонятным

    - над чем необходимо работать

    Учащиеся подытоживают свои знания по изучаемой теме.









    написать администратору сайта