【问题标题】:Different Bubble Sort algorithm codes - what's the difference? C++ [closed]不同的冒泡排序算法代码 - 有什么区别? C++ [关闭]
【发布时间】:2014-02-24 23:00:28
【问题描述】:

我在 C++ 中遇到过许多不同的冒泡排序算法实现。我现在将列出一些(只是彼此不同的几行),以便有人可以告诉我其中的区别。我注意到有些人使用 while 循环,它有点不同,但遍历数组的行仍然相同。

这些代码示例是使用 for 循环遍历数组的示例。

示例 1:

 for (int i=0; i<size-1); i++)
  for (int j=i+1; j<size; j++)
    //swap lines

示例 2:

for (int j=0; j<(size-1); j++)
  //swap lines

那么有什么区别呢?第二个每次遍历整个数组,第一个每次都少1? 我知道算法通过数组,交换它,没有必要再次回到数组的第一个元素,所以我猜第一个更好。

另外,C++ 中冒泡排序的最佳实现是什么(如果可以,请包含代码)?

【问题讨论】:

  • (1) 您已经回答了自己的问题。 (2) 冒泡排序是一种标准算法,网络上有很多相关的资源。

标签: c++ bubble-sort


【解决方案1】:

冒泡排序是 O(n^2),所以总是会有像示例 1 中那样的嵌套循环,或者其他等效的东西。示例 2 将使用其他一些构造(可能是递归)来实现相同的目标。

不会有单一的最佳实现。不同的实现以不同的方式更好。冒泡排序有时用于在接近排序顺序的列表上快速运行的排序。利用此属性的版本将在有序列表上运行得更快,但在完全随机的列表上运行可能会慢一些。

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 2013-06-07
    • 2011-11-22
    • 2012-11-17
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多