当前位置:  开发笔记 > 编程语言 > 正文

在第一次学习排序算法时,应该先教学生什么?

如何解决《在第一次学习排序算法时,应该先教学生什么?》经验,为你挑选了6个好方法。

如果你是一名编程老师,你必须选择一种排序算法来教你的学生哪一种?我只要求一个,因为我只想介绍排序的概念.它应该是冒泡排序还是选择排序?我注意到这两个人最常被教授.还有其他类型的排序可以用更容易理解的方式解释排序吗?



1> rjzii..:

我不确定自己可以成为一名计算机科学老师,只教一种排序算法.

至少应该向学生讲授每种主要排序类型中的至少一种,即交换排序,选择排序,插入排序和合并排序.除了这些类型中的每一种之外,我还将介绍属于分区排序标题的Quicksort.

至于我将涵盖的每种类型的特定种类:

冒泡排序作为交换排序类别的一个例子,因为它是最简单的排序类型之一,也可能是他们已经看到或偶然发现的排序类型.如果他们为了简单的事情而不得不自己动手,这也是他们最常使用的那种,所以他们理解它是有意义的.

来自选择排序类别的Heaport.这可能是Quicksort旁边最混乱的排序,但一旦他们理解了如何设置它们以理解Quicksort算法.

插入排序作为插入排序类别的一个示例将被涵盖,因为它也是一个简单的排序,他们可以得到很多用途.由于他们可能会遇到需要将两个列表合并在一起的情况,因此知道这个列表是有意义的.

Merge Sort在某种程度上是一种特殊的排序方式,因此您不会经常看到它,但它非常擅长它的功能,并且在您需要按照零碎方式对数据进行排序的情况下仍然很有用.

如果我不得不把事情缩小到我可以教的一种,但我有时间确保学生完全理解发生了什么然后我会教Quicksort.虽然它并不容易掌握,但绝大多数框架都将它用于排序算法,因此了解它的工作方式对于使用该框架进行开发非常有用.此外,很有可能如果有人能够理解Quicksort,那么他们应该能够自己学习冒号排序和插入排序.


不要忘记'一次通过泡泡排序然后快速排序'去除那个令人讨厌的最坏情况的快速排序:)(具有讽刺意味的是,快速排序在排序列表中使用时速度最慢,但有用的是这是最快的排序:))
我会添加桶排序,因为与其他人相比,它实际上是一个不同的权衡,具有不同的权衡.

2> Steve..:

让你的学生决定.

在介绍任何排序算法之前,给每个学生一些扑克牌,大约10个左右.然后让他们对卡片进行分类.让他们写下他们采取的步骤,这基本上是他们的算法.可能他们会发现插入或选择排序.您还可以要求他们估计,如果他们拥有100张或1000张牌,他们的排序会采取多少步骤,这是一个很好的导致大O符号.

PS - 有没有人认为他们会发现泡泡排序?


我希望我能够更多地投票.没有什么比让学生设计一种做某事的方法更有教育意义了,而且只有在做完之后,向他们展示其他人想出的东西.

3> Jeremy Frey..:

无论教授什么排序算法,如果学生还没有学习bogosort,他们就会错过,老师正在失去一种与观众互动的明显方式:)



4> workmad3..:

如果你想教授排序,那么冒泡排序可能是最容易理解的.如果你想教授排序算法,那么你应该真正教授quicksort,mergesort,insertsort甚至是heapsort,以便学生能够感受到各种排序方法之间的权衡.



5> Brandon..:

我首先要显示插入排序.每个人都对一张牌(基本上都是每个人)进行了分类.此外,它没有泡沫排序的糟糕表现.



6> Lou Franco..:

我首先学习了Bubble Sort - 我想如果你只做一个,你可能需要做一个O(n ^ 2)算法,因为它们更容易理解.

有很多排序可视化器可以帮助您快速显示比较:

http://www.cs.ubc.ca/~harrison/Java/sorting-demo.html

http://math.hws.edu/TMCM/java/xSortLab/

http://vision.bc.edu/~dmartin/teaching/sorting/anim-html/all.html

http://maven.smith.edu/~thiebaut/java/sort/

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有