所以,.Net和Java已经破坏了我“不需要”学习任何排序算法,但是现在我需要用不同的语言对数组进行排序而没有这种奢侈。我能够轻松搞定泡泡分拣。然而,一些消息来源厌恶使用气泡分类,因为在n ^ 2比较的平均和最差情况下可怕的性能。冒泡排序似乎可以完成工作,但是关于解决一个拥有+100,000个元素的数组并让我担心在这个程度上性能可能是一个问题。另一方面,其他一些算法在复杂性方面看起来非常令人生畏。我的问题是,在更好的性能方面对泡沫排序有什么好的跟进,但在实施中不会陷入复杂的荒地?
作为附注,我是一名分析员,根据需要,而不是CS专业。毋庸置疑,我的编程专业知识中还有一些漏洞。谢谢:))
答案 0 :(得分:1)
有many options,每个都有自己的权衡。正如您所发现的,冒泡排序的折衷是(a)简单,但(b)即使是远程大型阵列也很慢。
充分了解要排序的数据有助于确定哪种算法最佳。例如:
没有一种排序算法比其他算法更好。选择适合您需求的东西是您随着时间的推移和实践而选择的。
答案 1 :(得分:0)
花点时间学习Quicksort,这是一个很好的算法,如果你走得慢的话也不会那么复杂。
如果你想要一些排序算法只是为了让你的脚湿透(我),我会建议插入排序和选择排序,它们通常比冒泡排序更好,并且快速理解和实施。合并排序在算法课程中也很常见。您可以更好地使用快速排序。
如果您还没有,您还应该了解稳定和非稳定排序之间的区别。稳定的排序不会改变具有相同键的项目的顺序,而非稳定的排序则可以。