Sorting 新手的排序算法

Sorting 新手的排序算法,sorting,Sorting,所以,.Net和Java已经把我惯坏了,我不需要学习任何排序算法,但现在我需要用不同的语言对数组进行排序,而这种语言并没有这种奢侈。我能够在没有什么问题的情况下学会气泡排序。然而,一些消息来源不喜欢使用气泡排序,因为在n^2比较的平均和最坏情况下,其性能非常糟糕。冒泡排序似乎完成了任务,但关于处理包含+100000个元素的数组,我担心在这种程度上性能可能会成为一个问题。另一方面,其他一些算法在复杂性方面看起来相当吓人。我的问题是,在更好的性能方面,什么是气泡排序的良好后续,但在实施过程中不会陷入

所以,.Net和Java已经把我惯坏了,我不需要学习任何排序算法,但现在我需要用不同的语言对数组进行排序,而这种语言并没有这种奢侈。我能够在没有什么问题的情况下学会气泡排序。然而,一些消息来源不喜欢使用气泡排序,因为在n^2比较的平均和最坏情况下,其性能非常糟糕。冒泡排序似乎完成了任务,但关于处理包含+100000个元素的数组,我担心在这种程度上性能可能会成为一个问题。另一方面,其他一些算法在复杂性方面看起来相当吓人。我的问题是,在更好的性能方面,什么是气泡排序的良好后续,但在实施过程中不会陷入复杂的荒地?


顺便说一句,我是一名分析师,根据需要选择课程,而不是CS专业。不用说,在我的编程专业知识中还存在一些漏洞。谢谢:)

慢慢来学习快速排序,它是一个很棒的算法,如果你走得慢,也不会那么复杂

如果您想要一些排序算法只是为了让您的脚湿(ter),我建议使用插入排序和选择排序,它们通常比冒泡排序好,并且易于理解和实现。合并排序在算法课程中也很常见。不过,您将更好地使用快速排序

如果您还没有了解稳定排序和非稳定排序的区别,那么您还应该了解它们之间的区别。稳定排序不会更改具有相同键的项的顺序,而非稳定排序可能会更改这些项的顺序。

有,每个项都有自己的权衡。正如您所发现的,Bubble Sort的折衷方案是:(a)简单,但(b)即使是远程大型阵列也很慢

  • 是个不错的选择,但您可能会遇到内存问题
  • 我已经成功地使用了它,但是它不能保证稳定(尽管我从来没有遇到过问题)
  • 实现和谈论起来很有趣,但完全不切实际
  • 等等
对要排序的数据有很好的理解有助于决定哪种算法最好。例如:

  • 阵列有多大
  • 是否有可能已经排序或部分排序
  • 数组包含什么类型的数据
  • 比较阵列中的两个元素有多困难/昂贵
  • 确定数组是否已排序有多困难/成本有多高
  • 等等

没有一种排序算法比所有其他算法都好。选择适合您需要的内容是您将随着时间的推移和实践而学会的。

快速排序被广泛使用。您可以选择: