Урок 26-27. Проект «Сортировка слиянием»

План урока

    Урок 1
      1. Поиск первого слова в небольшом массиве
      2. Поиск первого слова в нескольких массивах слов
      3. Сортировка слов в небольших группах
      4. Сортировка слов слиянием упорядоченных массивов
    Урок 2
      5. Упорядочение слов с помощью сортировочного дерева
      6. Сортировка массива слов через классификацию

Материалы к проекту: по одному комплекту карточек на учащегося из вкладыша Тетради проектов, с. I –XVIII, XXIX – XLIV.

Несколько слов о сортировке информации

В информатике сортировкой называется наведение порядка в информации. Разберемся, какие виды сортировок нам могут понадобиться, и постараемся понять, что в них общего, а чем они отличаются друг от друга.

Рассмотрим это на примере списка учеников класса. В журнале список учеников класса приводится в алфавитном порядке. Чтобы такой список появился, классный руководитель и секретарь школы проделали некоторые манипуляции: может быть, просто нажимали кнопки на компьютере, а возможно, раскладывали личные дела. На линейке 1 сентября и на уроках физкультуры во многих школах принято выстраивать детей по росту, а чтобы не забыть поздравить ребенка с днем рождения, удобно иметь список детей в порядке дат рождения. Во всех приведенных случаях наводился определенный порядок по заранее выбранному правилу. Операцию по наведению порядка будем называть упорядочением. В терминологии курса можно говорить, что при упорядочении информационные бусины выстраиваются в цепочку.

В процессе выполнения проектов мы постарались разобраться в способах упорядочения информации. При упорядочении все элементы списка выстраиваются в цепочку друг за другом в соответствии с заранее выбранным правилом. Но часто нужно не расставлять учеников в каком-то порядке, а объединить их в некоторые группы опять же по заранее установленным правилам (признакам): мальчики – девочки, отличники – хорошисты – троечники – двоечники, дети из полных семей – дети из неполных семей, общее любимое блюдо, близкоживущие дети, болельщики одной команды и т. д. Операцию по объединению в группы будем называть группировкой. В терминологии курса можно говорить, что при группировке информационные бусины раскладываются в мешки по определенным правилам.

На первый взгляд между упорядочением и группировкой мало общего, но на самом деле это не так. В большинстве случаев нас действительно не интересует порядок, в котором мы рассматриваем результаты группировки. Не имеет значения, кто стоит впереди – мальчики или девочки – и в каком порядке рассматривать отличников, троечников и хорошистов. Важно только, что они объединены в группы.

Попробуем проследить, как мы группируем учеников. Мы обязательно вырабатываем для себя некоторый порядок. Например, в левый столбик выписываем фамилии отличников, правее – хорошистов, еще правее – учеников с одной тройкой и т. д. Затем начинаем в столбики вписывать фамилии. Зрительно у нас снова получаются цепочки (ведь в каждом столбике слова идут друг за другом), но здесь порядок слов нам не важен.

При упорядочении учеников у нас тоже могло получиться так, что два или более учеников имеют одинаковые фамилии, имена и отчества или совпадающий день рождения. В этом случае согласно установленным правилам упорядочения из них нельзя выбрать идущего раньше, поэтому получится маленький мешок с фамилиями нескольких учеников. Мы, конечно, впишем их в цепочку в произвольном порядке.

Из приведенных примеров понятно, что процессы упорядочения и группировки имеют очень много общего. Отличаться будет отношение к результату. При группировке существенно только, в какой мешок (группу) попала фамилия, а при упорядочении важна последовательность. Упорядочение часто является способом (элементом) сортировки. Так, в списке, упорядоченном по датам рождения, легко выделить группы учеников, родившихся в разные времена года. Или наоборот, проводя упорядочение по алфавиту, часто бывает удобно сначала сгруппировать фамилии по первым буквам, а затем уже упорядочивать их в группах.
В математике понятие сортировка объединяет понятия упорядочение и группировка. Мы также используем только термин сортировка, иногда уточняя: «Сортировать в алфавитном порядке».

О проекте

Умение ориентироваться в больших массивах информации является важнейшим в век информационных технологий. Прежде всего, нужно иметь возможность легко находить информацию, соответствующую определенным критериям, сортировать и группировать ее по определенным правилам. В современной повседневной жизни основную черновую работу по обработке больших массивов информации проводят компьютеры. Выполнять ее вместо компьютера в реальной жизни нам не надо, но чтобы правильно интерпретировать результаты работы компьютеров и должным образом подготовить запрос для компьютера (правильно поставить задачу поиска и обработки информации), важно понимать, как они это делают. Знакомству с алгоритмом сортировки и посвящен настоящий проект. Часто в жизни бывают моменты, когда требуется расставить или разложить в заданном порядке различные предметы (книги, тетрадки). Такую работу не удастся передать компьютеру.

К настоящему моменту ребята хорошо знакомы с правилом словарного порядка, умеют ориентироваться в настоящих, «взрослых» словарях и умеют расположить небольшую кучку слов в словарном порядке. Теперь усложним задачу. Попросим расположить в словарном порядке весьма значительный массив слов: 17 листов по 24 карточки – это 408 слов. Количественное увеличение слов в данном случае приводит к качественным изменениям. 408 слов уже нельзя увидеть сразу все и даже найти первое из них – не простая задача. Методика, интуитивно используемая детьми при сортировке небольшого числа слов, здесь неприменима.

Приступая к выполнению проекта, выньте листы вкладыша из одной Тетради проектов и вырежьте из них отдельные карточки. Каждый ребенок имеет в Тетради проектов полный список всех слов, что позволит ему заняться их сортировкой и дома вместе с родителями; в классе же на первых порах рекомендуется использовать только один набор слов. Можно попробовать поставить задачу сортировки, не давая сначала никаких руководящих указаний, и понаблюдать, что и как ребята будут делать.
Даже если дети организованные и рабочее место в классе позволяет всем собраться вокруг одного стола, дело будет продвигаться небыстро. И главное здесь, что увеличение объема работы приводит к необходимости изменить способы ее выполнения. В большой куче не удастся увидеть сразу все слова, так что нельзя, просто просматривая все слова, найти первое из них. Надо придумать способ, который позволит отыскать такое слово, про которое мы сможем уверенно утверждать, что оно первое. Для этого следует восстановить и обсудить с детьми, что они делали, разыскивая первое слово среди 12 слов. Проговаривая, как они ищут слово одновременно с перекладыванием и передвижением карточек, дети убеждаются в том, что они обязательно наводят в этом процессе определенный порядок, действуют по определенному алгоритму.

При сортировке большого массива возникают два вопроса:
1. Какую выбрать стратегию сортировки? Существует много разных алгоритмов сортировки различной информации при создании компьютерных программ. Работая в проекте, учащиеся проведут сортировку разными способами и попробуют понять их преимущества и недостатки.
2. Как правильно распределить работу? Когда на долю человека выпадает очень много работы, он зовет себе на помощь других людей и они делают ее вместе. Но, работая вместе, нужно уметь договориться о том, кто что будет делать. Ведь может получиться так, что люди будут не помогать, а только мешать друг другу. Не исключено, что работать будут только один или два человека, а остальные – наблюдать. Обучаясь в этом проекте организации совместной параллельной работы людей над общей задачей (что само по себе очень важно), мы познаем и то, как это делают компьютеры.

Разобьем наш большой проект «Сортировка слиянием» на 6 более мелких мини-проектов, каждый из которых имеет свою содержательную цель. Эти мини-проекты выстроены в цепочку, и каждый последующий элемент в ней продолжает предыдущий. Их обязательно надо выполнять по порядку. Правильнее считать все мини-проекты частями одного большого проекта. Мы выделяем их, так как каждый из них, являясь частью целого, имеет и свою законченную цель.

Урок 1

Мини-проект 1. Поиск первого слова в небольшом массиве

Задание: найти слово, которое идет раньше всех из небольшого массива слов. Выполнять этот мини-проект лучше всего в небольших группах по 2–4 человека. Раздайте каждой группе по одному комплекту (24 слова), предварительно разрезав его на карточки. Каждую группу попросите из своих слов найти первое слово – слово, идущее раньше всех других. В процессе поиска учащиеся должны постараться объяснить друг другу, как и что они делают. Им надо ответить на два вопроса:

1. Как они нашли это слово?
2. Почему они уверены, что это слово первое?

Чтобы быть уверенным, что выбранное слово первое, надо сравнить его с каждым из остальных в своей кучке слов и убедиться, что оно идет раньше всех. Самым простым способом действия (при условии, что заняты один или несколько человек, которые не разделяют работу между собой) будет следующий:

1. Взять два первых попавшихся слова.
2. Из них выбрать то, которое стоит раньше, а второе отложить в сторону.
3. Выбрать из кучки карточек новое слово вместо отложенного и вернуться ко второму пункту алгоритма – снова выбрать первое из двух, а ненужное отложить.
4. Когда в исходной кучке карточек не останется слов, у нас в руках будет самое первое слово.
Дети могут предложить много различных способов действия, и необходимо только отследить их правильность – выбранное слово надо обязательно сравнить (прямо или косвенно) со всеми остальными. На этом этапе особенно важно, чтобы дети проговаривали то, что они делают.

Мини-проект 2. Поиск первого слова в нескольких массивах слов

Задание: найти слово, идущее раньше всех из нескольких массивов слов. Этот проект очень короткий, но его выполнение и последующее обсуждение имеют большое значение для понимания оптимального, наиболее быстро приводящего к достижению результата алгоритма слияния нескольких массивов слов. После завершения мини-проекта 1 обычно кто-то довольно быстро догадывается, что первое из всех слов надо искать среди первых слов каждой группы. Поскольку таких слов немного, то нужное слово увидеть нетрудно – так же как в мини-проекте 1, даже еще быстрее. Но стоит проговорить еще раз необходимость сравнения выбранного слова со всеми остальными первыми словами из групп и косвенного (по транзитивности) сравнения со всеми 408 словами.

Можно предложить такой порядок действий:
1. Все группы поднимают свое первое слово на всеобщее обозрение. Теперь каждая группа имеет возможность сравнить свое первое слово с первыми словами остальных групп.
2. Далее все, считающие, что их слово не первое, опускают его. Через некоторое время поднятым останется одно слово, которое и будет самым первым среди всех. Дети могут ошибаться, поэтому надо попросить каждого опускающего слово объяснить, почему он это делает. Например: «У нас слово ВОРОТА, а у Саши – БАРАБАН. БАРАБАН стоит раньше, чем ВОРОТА, значит, мы можем опустить свое слово». Не сразу все понимают, что они могут опустить свое слово, если увидели хотя бы одно слово, которое стоит раньше него.

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

Несколько слов о параллельной организации работы

В первой части проекта учащиеся научились находить первое слово из 24 слов. Это задача, скорее всего, не была для них сложной. Обсуждая правила нахождения первого слова, мы выяснили, что при самом быстром способе нахождения для 24 слов необходимо сделать 23 сравнения. Если на каждое сравнение уходило приблизительно 20 секунд, то на отыскание первого слова у группы ушло чуть менее 8 минут (на практике в такое время укладываются все группы; столько же времени потребовалось бы и одному человеку).

Теперь подумаем, сколько времени израсходует один человек на нахождение первого из 408 слов (при применении такого же алгоритма понадобится уже 407 сравнений). Если бы на каждое сравнение уходило опять 20 секунд, то вся работа заняла бы уже
407 × 20 : 60 ≈ 136 минут (2 часа 16 минут).

Причем совершенно неважно, работает по этому алгоритму один человек или сразу весь класс, – дело будет продвигаться одинаково медленно. А нам вместе с детьми в первом и втором мини-проектах удалось найти первое слово из 408 гораздо быстрее. Почему? Давайте обсудим это с ними.

У детей появятся различные версии. Важно выделить главную: на первом этапе проекта все группы работали одновременно и каждая группа делала свою часть работы параллельно с другими. Во второй части мини-проекта учащиеся для выполнения общей задачи использовали результаты работы групп. На первый мини-проект ушло около 8 минут, на второй – еще около 8 минут. Время значительно отличается от 2 часов 16 минут!

Если удастся разделить работу на части и каждую из частей поручить отдельной группе, то выигрыш во времени при ее выполнении будет значительным. Правда, это достигается только в том случае, если группы работают одновременно. Действительно, если 408 слов разделить на 12 групп, то каждой достанется 34 слова и потребуется сделать 33 сравнения (всего 33×12=396), а затем для поиска первого слова из 12 первых всему классу придется выполнить еще 11 сравнений. В сумме получаются все те же 407 сравнений. Если бы группы работали друг за другом, то времени понадобилось бы больше трех уроков. Но группы действовали одновременно, и можно считать, что времени было затрачено всего на 33+11=34 сравнения – чуть больше 11 минут. Таким образом удалось значительно сэкономить время, правда, в данном случае за счет увеличения числа работников (ресурсов). Реально из-за временных затрат на объяснения и обсуждения мини-проекты оказываются более продолжительными.

Интересно измерить чистое время, необходимое для выполнения работы. Засекать начальный момент следует всегда после окончания объяснений и обсуждений по команде «начали». Хорошо, если в классе будут большие часы с секундной стрелкой или спортивный секундомер (лучше иметь и то и другое).

Мини-проект 3. Сортировка слов в небольших группах

Теперь попросим каждую группу упорядочить все свои 24 слова. Можно вначале обсудить, какие варианты организации работы существуют, но лучше просто предложить упорядочить слова и понаблюдать, как каждая группа будет это делать. Если какая-то группа справилась со своей работой быстрее, то имеет смысл попросить ее помочь другой, лучше всего самой медлительной группе. Помогать можно по-разному, но разумнее всего порекомендовать взять у отстающей группы несколько слов и разместить их в своей упорядоченной цепочке.

После того как все мешки слов будут превращены в цепочки расставленных в алфавитном порядке слов, попросите каждую группу рассказать о том, как она это делала. Не исключено, что какая-то группа действовала неправильно; в таком случае будет хорошо, если другие группы заметят это. Можно предварительно попросить группы проверить правильность расстановки слов одна у другой.

Скорее всего, учащиеся не станут делить свою работу в группах на части, а просто будут действовать вместе, как делал бы один человек, только контролируя друг друга. Часто получается так, что по существу все выполняет один – лидер, а другие лишь помогают ему двигать карточки. Впрочем, здесь самоорганизация детей обычно не отличается от организации любой другой групповой деятельности.

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

Мини-проект 4. Сортировка слов слиянием упорядоченных массивов

Теперь настало время объединить работу групп и создать один упорядоченный массив слов. После постановки задачи надо обсудить с детьми их предложения по дальнейшей организации работы. Учащиеся обычно сразу отметают предложение все опять смешать и начать заново. Всегда побеждает идея воспользоваться уже наведенным порядком. Дети вспоминают второй мини-проект, когда при поиске первого слова использовался результат, полученный группами.

Сначала предложим детям объединить только две цепочки слов. Правильным будет такой порядок действий, который позволит сливать два упорядоченных массива, сразу создавая порядок. Например, так. Перед учениками лежат две упорядоченные стопки карточек, причем сверху находятся те, что идут в словаре раньше. Сравниваем две верхние карточки в стопках и первую из них кладем в третью (вновь созданную) словом вниз. Дальше сравниваем оставшиеся верхние карточки и теперь первую из них кладем в третью стопку на первую карточку снова словом вниз. И так продолжаем до тех пор, пока все карточки не будут переложены в новую стопку.

Например, пусть у нас есть две упорядоченные стопки, каждая из четырех слов. Вот последовательность действий:

Этот способ должен появиться при обсуждении у доски порядка слияния цепочек двух групп. Тут не следует торопиться, надо фиксировать и обсуждать все выполняемые шаги. Желательно, чтобы каждый шаг возникал как результат обсуждения предложений учащихся.

После того, как всем станет понятна последовательность действий, предложите группам объединиться по две и слить свои цепочки. Учителю необходимо внимательно следить за организацией работы и в случае нарушения правил слияния вмешиваться. В отличие от предыдущих мини-проектов, здесь нам важно усвоение выработанного способа слияния цепочек. Отклонений от правил слияния бывает меньше, если слова у каждой группы лежат не рядом друг с другом, а одно поверх другого, в стопке, карточка на карточке. Очень существенно, чтобы у детей сформировалось (пусть не сразу) понимание того, что при слиянии достаточно видеть только первое слово в стопке и быть уверенными, что все слова в этой стопке упорядочены. Нет необходимости заглядывать в остальные слова. Такая работа будет выполнена довольно быстро, и число цепочек слов уменьшится в два раза, но эти цепочки окажутся в два раза длиннее.

Как продолжить работу дальше, детям обычно бывает понятно. Надо объединять новые цепочки в еще более длинные. Замешательство обычно возникает тогда, когда число групп становится нечетным. В этом случае возможны два варианта. В первом варианте одна группа дожидаются следующего этапа слияния, а во втором – одновременно сливаются слова сразу трех групп. Второй вариант является более сложным, и его можно предложить при наличии в этих группах сильных учащихся.
Нужно выполнить еще несколько этапов и последовательно слить все стопки слов в одну. Основная проблема – постепенное увеличение числа незадействованных в работе учеников по мере уменьшения числа групп. А сливать две цепочки по приведенному в этом мини-проекте правилу может и один человек. Удобно это делать и вдвоем, но больше людей не нужно.
Необходимо придумать, чем в это время будут заниматься остальные. Иначе в конце проекта получится, что «один с сошкой, а семеро с ложкой». На последнем этапе особенно много времени потребуется для слияния всех слов в единую цепочку. К тому же на этом этапе окажется больше всего не участвующих в работе детей. Поручите последнее слияние выполнить одному ученику у доски под контролем всего класса.

Еще несколько слов о параллельной работе

Способ слияния двух упорядоченных массивов информации очень важен. Учащиеся осваивают его в ходе практической деятельности. Можно обсудить, сколько времени потребовалось бы одному человеку для того, чтобы упорядочить все 408 слов. Мы уже определили, что для нахождения только одного первого слова может понадобиться больше трех уроков; значит, на упорядочение всех слов, если второе и все остальные слова искать по тем же правилам, что и первое, уйдет больше четверти. Нам же удалось методом слияния упорядоченных массивов и с использованием параллельной работы групп выполнить задачу гораздо быстрее. При поиске первого слова выигрыш во времени получался только благодаря параллельной работе многих учащихся. Попросите детей подумать, что происходит в случае упорядочения. Получится ли быстрее, если один человек будет упорядочивать не сразу все 408 слов, а попытается в одиночку повторить способ работы, объединяющий третий и четвертый мини-проекты. Попробуйте сами ответить на этот вопрос.
Предложите учащимся провести эксперимент. Пусть один ученик упорядочивает 24 слова, находя сначала первое слово, затем второе, затем третье и т. д., а другой, разбив их на четыре кучки, упорядочивает каждую кучку, а затем сливает полученные цепочки слов по уже выработанным в проекте правилам. Интересно сравнить время выполнения работы и занести результаты в таблицу. Затем стоит поменяться стратегиями и заполнить таблицу еще раз.

В силу разных случайностей у каждого конкретного ученика могут иногда получиться и результаты, не соответствующие эффективности выбранного способа сортировки, но в большинстве случаев все должно быть правильно. Суммарное время будет больше при использовании первого способа.

Важно понять в процессе работы, что ускорение происходит не только за счет правильного объединения усилий большого коллектива, но и благодаря выбору эффективного алгоритма. Даже если будет работать один человек (одна вычислительная машина), сортировка слиянием (разбиение мешка на части с последующей сортировкой и слиянием упорядоченных частей) окажется самой быстрой.

Урок 2

Мини-проект 5. Упорядочение слов с помощью сортировочного дерева

В предыдущем мини-проекте мы научились сливать упорядоченные массивы. Мы справились с задачей довольно быстро, но от этапа к этапу оставалось все больше не участвующих в деле детей. Попробуем поставить дело так, чтобы возможности каждого в сортировке использовались наиболее эффективно. Дети уже при выполнении четвертого мини-проекта могли заметить, что для продолжения слияния более длинных цепочек необязательно дожидаться окончания слияния ее более коротких составных частей. Ведь слияние мы начинаем сверху, и к нему можно приступать, даже если работа внизу еще не завершена. Давайте для решения задачи упорядочения всего мешка слов организуем деятельность так, чтобы каждый ученик выполнял свою часть задачи.

Попробуем нарисовать дерево слияний. Каждый ученик может сливать два массива, поэтому у каждой бусины (кроме листьев, конечно) будут ровно две следующие. Листьями этого дерева будут стопки слов. Число всех остальных бусин на этом дереве должно равняться числу учеников. Для 29 учеников дерево приведено на рисунке ниже. Каждая круглая бусина обозначает одного ученика, поэтому можно их подписать или пронумеровать (как это сделано на нашем дереве), а рядом заполнить таблицу, в которой каждому номеру поставить в соответствие имя ученика. Следует обсудить, на чью долю в этой схеме выпадает больше всего работы. Исходя из опыта предыдущего мини-проекта, дети сообразят, что основная часть работы достанется тому, кто стоит в корне дерева. Поэтому лучше, если это будет наиболее сильный ученик, а, возможно, и учитель.

Приведенное дерево достаточно просто перестроить для любого нечетного числа учеников от 15 до 31. Для 31 ученика можно добавить две бусины на пятый уровень так, чтобы нижняя ветка дерева стала точно такой же, как верхняя. Если учеников в классе больше 31, то можно оставшихся детей назначить контролерами на разные уровни. Они будут следить за правильным выполнением алгоритма. Кроме того «корневому» ученику возможно просто понадобится помощь. Чтобы построить дерево для нечетного числа учеников, меньшего чем 29, можно убирать с пятого уровня по две бусины, следующие за некоторой бусиной четвертого уровня, до тех пор, пока нужное число бусин не будет достигнуто. При этом следующие за убранными бусинами-учениками бусины-стопки, конечно, тоже убираются, а затем за каждой вновь появившейся бусиной-листом четвертого уровня ставим по две бусины стопки. Например, дерево для 25 учащихся приведено на следующем рисунке.

Если в классе число учеников четное, то можете либо сами поучаствовать в сортировочном дереве, либо одного ученика направить помощником к «корневому».

На первом этапе разобьем все слова на кучки по числу участвующих в мини-проекте учеников и попросим всех упорядочить свои слова в алфавитном порядке. Слов у каждого ученика будет немного, и такая задача не должна вызвать у учащихся затруднения – она знакома всем. Чтобы каждый ученик сливал ровно два массива, число стопок должно быть четным. Поэтому если число учащихся в классе нечетное, то стопок следует заготовить на одну больше. Одну дополнительную кучку может упорядочить учитель.

Теперь надо придумать, как организовать работу. Возможен следующий вариант.

На столах выложены в ряд все упорядоченные массивы. Перед ними встает в два раза меньшее (чем число массивов) число учащихся. Далее учащиеся выстраиваются в соответствии с сортировочным деревом для вашего класса. Правила взаимодействия могут быть различными.
1. Каждый ученик занимается слиянием двух массивов (массива у левой руки и массива у правой руки), но складывает карточки со словами в стопку только «корневой» ученик, а остальные отдают первую из своих двух карточек ученику, стоящему у них за спиной, причем только после того, как этот ученик попросит (например, прикоснувшись к плечу).
2. У ученика в руках две карточки. Он выбирает из них первую и отдает ее ученику, который стоит у него за спиной. Если первой была карточка в левой руке, то новую карточку надо попросить у ученика, который стоит слева (для ученика из первого ряда – взять карточку из левой кучки), а в противном случае – у ученика, который стоит справа.

Ускорение упорядочения происходит за счет параллельности работы. Хотя при такой схеме, как мы уже выяснили с детьми, не все одинаково загружены работой, эффективность может быть очень высокой. Если «корневой» ученик (или учитель) работает быстро, а дети хорошо читают или быстро узнают слова, то процесс сортировки 408 слов потребует 15–25 минут. После окончания сортировки нужно еще раз обсудить, кто больше был загружен и во сколько раз. Можно подсчитать, сколько сравнений сделал каждый ученик.

Алгоритм, описанный в данном мини-проекте, называется «алгоритмом пузырькового всплытия».

Мини-проект 6. Сортировка массива слов через классификацию

Мини-проект дает третий алгоритм выполнения той же задачи – сортировки большого массива слов (17×24 слов) силами всего класса.

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

2. Затем каждый ученик садится за один стол (или берет один ящик) со словами на определенную букву и наводит порядок в данных карточках. О том, кому какая буква достанется, вам надо подумать заранее. Количество слов в наборе на разные буквы различно. Есть очень «популярные» буквы, слов на которые больше 20 (В, К, Л, М, Н, П, С, Т). Ящики с такими буквами лучше поручить сильным учащимся. Есть буквы, на которые в наборе слов меньше 10 (А, Г, Е, Ё, З, И, Ф, Х, Ц, Э, Ю, Я). В соответствующих этим буквам ящиках смогут разобраться даже слабые и медлительные дети. При этом кому-то из ребят придется заниматься сразу двумя ящиками. Все эти детали лучше продумать при подготовке к уроку.

3. Работы всех учеников собираются в алфавитном порядке первых букв. Обсудите с учениками, как проходила работа, и спросите, как они думают – всегда ли будет получаться так удачно? Они должны понять, что такой способ хорош лишь в определенных случаях. Продемонстрируйте это, предложив массив слов, у которых первые 2–3 буквы будут одинаковыми. В этом случае придется по ходу действия менять алгоритм работы. Хорошо, если в результате последующих обсуждений дети усвоят, что данный алгоритм сортировки не универсальный (эффективность алгоритма зависит от конкретного набора слов), в отличие от универсального алгоритма сортировки слиянием упорядоченных массивов (эффективность не зависит от конкретного набора слов).

4. Стоит обсудить, нужны ли неуниверсальные алгоритмы. Если не возникнет никаких побочных проблем (например, неудобно стоящие столы), то при «хорошем» наборе слов (на каждую букву слов приблизительно одинаково) задача сортировки массива с помощью алгоритма упорядочения через классификацию будет выполнена значительно быстрее, чем посредством алгоритма пузырькового всплытия.

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