不同的冒泡排序算法代码 - 有什么区别? C ++

时间:2014-02-24 23:00:28

标签: c++ bubble-sort

我在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 个答案:

答案 0 :(得分:3)

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

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

相关问题