Что студентам нужно преподавать сначала при первом изучении сортировки алгоритмов? [закрытый]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

18
задан 6 revs, 5 users 100%Johan 22 August 2013 в 20:48
поделиться

32 ответа

Я не уверен, что мог быть учителем информатики и только преподавать один алгоритм сортировки.

Как минимум студентам нужно преподавать по крайней мере один из каждого из главные типы сортировки , а именно, вид обмена, вид выбора, вид вставки и сортировка слиянием. В дополнение к одному из каждого из этих типов я также покрыл бы Quicksort, который подпадает под заголовок вида разделения.

Что касается определенных видов от каждого из типов, которые я покрыл бы:

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

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

31
ответ дан 30 November 2019 в 05:37
поделиться

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

0
ответ дан 30 November 2019 в 05:37
поделиться

Я просто сделал это на прошлой неделе с моим ребенком, я прошу, чтобы он придумал их собственный алгоритм сортировки и спросил, сколько времени он возьмет для сортировки деки карт с помощью его метода. Затем я показал ему Пузырьковую сортировку (самое легкое, чтобы объяснить ребенку), "Это - пузырь!" и сделанный им считать шаги снова. Он понял затем, что это было легче и быстрее.

Затем, Если Вы хотите Вас, может преподавать более усовершенствованные (Quicksort является самым удивительным), Идеально необходимо преподавать три, по крайней мере, которые отличаются (не изменение того же)

0
ответ дан 30 November 2019 в 05:37
поделиться

Я сравнил бы и контрастировал бы o (n-squared), как вид выбора с o (n регистрируют n), вид как quicksort.

, Но если они не люди информатики и не обязательно намереваются быть затем просто шоу легкое для понимания вида как выбор или пузырь.

0
ответ дан 30 November 2019 в 05:37
поделиться

Если можно в конечном счете только преподавать ОДИН алгоритм вообще, я думаю, что SelectionSort еще легче учить (и реализация, по моему скромному мнению) как BubbleSort. Это могло бы быть крайним безрезультатно, но все получат его понятие, все с небольшим знанием программирования могут прочитать его код и существует одна вещь, которая делает SelectionSort довольно уникальным среди всех алгоритмов сортировки: Этому только нужен n - 1 подкачка для списка n записей :-) Не только, что это никогда не должно делать больше, чем n - 1 подкачка, этому на самом деле нужно точно n - 1 подкачка. Количество выполненных подкачек на 100% детерминировано и известно, прежде чем оно даже запустится. Я думаю, что это не верно ни для какого другого оперативного алгоритма сортировки (хотя люди свободны исправить меня в комментариях).

Иначе я голосую за BubbleSort и SelectionSort, это является самым легким понять и показать, как, сортируя простой способ (они достаточно просты, студенты могут на самом деле предложить эти решения не когда-нибудь услышав о любом алгоритме сортировки), является иногда не очень эффективным. По контрасту я показал бы QuickSort и MergeSort, будучи очень хорошим делением и алгоритмами завоевателя и обоими также очень быстро.

Алгоритмы, которые я не использовал бы как их понятие, более трудно получить, ShellSort, RadixSort, HeapSort и BucketSort. Также они являются довольно особенными (Вы обычно только используете их при сортировке определенного вида данных или если Вы имеете бесспорный, ограничивает для сортировки).

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

0
ответ дан 30 November 2019 в 05:37
поделиться

IntroSort является замечательным алгоритмом для обучения также, после того как студенты учились понимать Быструю и Пирамидальную сортировку. IntroSort (короткий для Самосозерцательного вида) запускается как QuickSort и переключается на HeapSort, если глубина рекурсии превышает уровень на основе логарифма отсортированного числа элементов.

В целом, Вы получаете лучший из миров Быстрой и Пирамидальной сортировки и худшее время выполнения случая O ( n журнала n).

IntroSort на Википедию

0
ответ дан 30 November 2019 в 05:37
поделиться

Учет того факта, что Ваш студент никогда не должен будет, вероятно, кодировать вид самостоятельно, вопрос действительно должен быть решен, "каково значение изучения этого алгоритма?" вместо, "что делает этот алгоритм?"

, Другими словами, Вашим студентам нужно преподавать множество различных алгоритмов - являются ли они для сортировки, поиск, сжимаясь и т.д. в основном не важен.

0
ответ дан 30 November 2019 в 05:37
поделиться

Независимо от фактического алгоритма Вы выберете, я совет Вы, чтобы представить два алгоритмы (вместо одного) и объяснить компромиссы (в памяти, скорости выполнения, и т.д.) они делают.

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

0
ответ дан 30 November 2019 в 05:37
поделиться

Er, необходимо давать им O (n^2), и O (n регистрируют n), вид. Пузырь и "куча" были бы мой выборы.

0
ответ дан 30 November 2019 в 05:37
поделиться

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

0
ответ дан 30 November 2019 в 05:37
поделиться

Quicksort является определенно другим очень просто понимаемым алгоритмом сортировки, и это - подпруга для реализации его. Это имеет в распоряжении AMD, "неуместную" версии, которые являются забавой думать о. И это быстро.

Достаточно быстрый для Вас, по крайней мере, старика.

0
ответ дан 30 November 2019 в 05:37
поделиться

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

0
ответ дан 30 November 2019 в 05:37
поделиться

лучше всего читайте лекции, я когда-либо принимал участие на алгоритмах, продемонстрировал весь из них как гистограммы, оттянутые через апплеты Java. Вы могли затем видеть шаблон сортировки, а также O (N) характеристики также...

Преподают пузырь, потому что его невероятно простой и показывают остальных анимациями, возможно?

0
ответ дан 30 November 2019 в 05:37
поделиться

Сделайте, чтобы все ввели деку карт и выбрали один иск. Разделитесь на команды два. Каждый переставляет эти 13 карт и кладет их, побеждают подряд. Партнер добирается для указания на две из карт. Другой берет их, смотрит на них, и или говорит "В порядке" или "Не в порядке" более дерзкое, затем может сказать ему подкачивать их и устанавливать их снова (лицом вниз)

, задание партнера состоит в том, чтобы отсортировать карты в порядке (что-то, что необходимо будет определить впереди).

, Когда parner думает, что они отсортированы, он говорит "Остановку". Другой поворачивает лицо карт, и они проверяют.

, Когда это сделано, обсудите то, что работало на всех. Затем разговор о ПУЗЫРЬКОВОЙ СОРТИРОВКЕ по сравнению с видом ВЫБОРА

Затем разговор о БЫСТРОЙ СОРТИРОВКЕ.

Сделали, чтобы они испытали каждого из них с их иском карт.

1
ответ дан 30 November 2019 в 05:37
поделиться

Я думал, что вид выбора был самым простым постигать, и IMO будет лучшим для представления сортировки.

я думаю, что было бы глупо не преподавать им по крайней мере один O (nlog (n)) сортировка алгоритма, наряду с объяснением большой нотации O.

1
ответ дан 30 November 2019 в 05:37
поделиться

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

Вид Выбора:
Находят минимум/максимальное значение и помещают его на месте, затем делают это снова на остальной части списка... это очень интуитивно. Для меня выбор намного более интуитивен, чем даже пузырьковая сортировка. Вы могли, вероятно, преподавать это в очень небольшое количество времени. И будет чувство выполнения людьми, реализующими это... Хотя Пузырь и Вставка могут выйти рано и не будут напрасно тратить время в отсортированном списке. Выбор является, вероятно, самым легким сделать. Вставку является, вероятно, самым трудным реализовать.

MergeSort:
Это будет преподавать, как объединиться (который важен, потому что существует тонна ускорений, которые можно получить путем слияния двух отсортированных списков вместе), а также как разделить проблему на меньшие sub проблемы (важный для контакта с иерархическими структурами и также используемый в быстрой сортировке). QuickSort, хотя быстрее намного более твердо понять. Вам нужны две переменные сканирования, объект центра, и т.д... Слияние является более прямым, и слияние пригодится для вещей кроме сортировки (как присоединение к двум записям вместе, которые отсортированы на поле)....

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

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

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

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

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

3
ответ дан 30 November 2019 в 05:37
поделиться

Пузырьковая сортировка является классиком, и очень легко схватить, почему это работает.

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

1
ответ дан 30 November 2019 в 05:37
поделиться

Это было бы вид основания . Поскольку это удивительно легко и все же неочевидно. Подобные вещи просто должны преподаваться.

2
ответ дан 30 November 2019 в 05:37
поделиться

Я думаю, что только обучение одного вида наносит вред. Помните, что Все Быстро Для Маленького n, таким образом, с точки зрения обучения вида, это не вопрос производительности, но понимание алгоритма.

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

2
ответ дан 30 November 2019 в 05:37
поделиться

Uhm... сортирующие алгоритмы, являются действительно интуитивным, конкретным способом обучения некоторых хороших уроков о Больших нотациях O, оптимизации, здравом смысле и информатике в целом и возможно "пузырьковой сортировке" + "избранный вид" +, подход "сортировки слиянием" мог бы быть полезным для сравнения. Я думаю, что самым интуитивным (и эффективный во многих случаях) является избранный вид.

2
ответ дан 30 November 2019 в 05:37
поделиться

Я преподавал бы "вызову платформу" вид.

было бы эффективно преподавать и изучить этот вид. У студентов были бы высокий уровень успеха и низкий коэффициент ошибок с реализацией этого вида.

<час>

Редактирование: существует большая критика комментариев к этому ответу о качестве моего единственного класса вида. Эти критические замечания применимы к какому-либо ответу на этот вопрос, который является - "Если Вы были учителем программирования, и необходимо ли было выбрать один алгоритм сортировки для обучения студентов, которыми один это будет?"

2
ответ дан 30 November 2019 в 05:37
поделиться

Я думаю, что методы сортировки являются очень хорошим примером того, каков алгоритм. Но это только становится хорошим примером при сравнении различных методов. Если можно только преподавать один, я не уверен, что это стоит.

Реалистично, мы называем метод сортировки в некоторой платформе. Таким образом, если Вы не можете эффективно учить сортировке alorithms, это не могло бы стоить времени.

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

3
ответ дан 30 November 2019 в 05:37
поделиться

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

я думаю, что студенты получили бы большую часть значения из изучения классика O (n^2) алгоритм (предпочтительно вставка или вид выбора, но не пузырьковая сортировка, которая не имеет никакого выравнивания для того, чтобы использоваться в реальных приложениях), а также делить-и-побеждать, O (nlogn) алгоритм, таких как quicksort или сортировка слиянием.

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

1
ответ дан 30 November 2019 в 05:37
поделиться

Вид выбора является, вероятно, самым простым алгоритмом сортировки для обучения и самый простой схватить. Это - также яркий пример того, почему простые решения являются не всегда лучшими, который мог вести в обсуждение более интересных и более быстрых видов как сортировка с объединением и quicksort.

3
ответ дан 30 November 2019 в 05:37
поделиться

Я запустил бы путем показа вида вставки. Все, кто отсортировал руку карт (который является в основном всеми) знают этот вид. Плюс он, не имеет плачевной производительности пузырьковой сортировки.

6
ответ дан 30 November 2019 в 05:37
поделиться

Я изучил Пузырьковую сортировку сначала - я думаю, делаете ли Вы только один, вероятно, необходимо сделать один из O (n^2) алгоритмы, потому что их легче понять.

существует много вида visualizers там, чтобы помочь быстро показать сравнение:

5
ответ дан 30 November 2019 в 05:37
поделиться

Если Вы хотите преподавать сортировку, то пузырьковую сортировку является, вероятно, самым легким постигать. Если Вы хотите преподавать алгоритмы сортировки, то необходимо действительно преподавать quicksort, сортировку с объединением, insertsort и возможно даже пирамидально сортировать так, чтобы студенты могли получить ощущение компромиссов между различными методами сортировки.

14
ответ дан 30 November 2019 в 05:37
поделиться

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

21
ответ дан 30 November 2019 в 05:37
поделиться

Я думаю, что фильм Sorting Out Sorting , который был снят 30 лет назад, все еще является довольно хорошим учебным пособием для лучшего понимания алгоритмов сортировки .. Вот версия с 12-кратной скоростью

0
ответ дан 30 November 2019 в 05:37
поделиться

Пусть решают ваши ученики.

Перед тем, как вводить какие-либо алгоритмы сортировки, раздайте каждому ученику несколько игральных карт, может быть, 10 или около того. Затем попросите их рассортировать карточки. Попросите их записать шаги, которые они делают, что по сути будет их алгоритмом. Вероятно, они обнаружат сортировку вставкой или выделением. Вы также можете попросить их оценить, сколько шагов они сделали бы, если бы у них было 100 или 1000 карточек, что является хорошим шагом к обозначению большой буквы О.

PS - кто-нибудь думает, что они открыли бы пузырьковую сортировку?

22
ответ дан 30 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: