c++ - 这是什么类型的?

标签 c++ sorting bubble-sort

我正在阅读的 C++ 书描述了一种排序算法,说它是冒泡排序,但我找不到像它一样的冒泡排序的单一变体。我知道差异很小,但它是否与常规冒泡排序一样有效?

BubbleSort(int A[], int length)
for (j=0; j < length-1; j++)
  for (i=j+1; i < length; i++)
    if (A[i] < A[j])
      Swap()

基本上,它不是比较两个相邻的值,而是将第一个 A[0] 与每个条目进行比较,在下一次传递时它将 A[1] 与其余条目进行比较,然后是 A[2] 等。

真的只是一个普通的冒泡排序,特性和性能完全一样吗?

最佳答案

这是 selection sort .在每次通过时,您都会找到第 i 个最小的元素并将其放在位置 i。第一遍之后就不用再看A[0]了,以此类推。选择排序是最坏情况下的 O(n2) 和最好情况下的 O(n),就像冒泡排序一样,但它的常数因子比冒泡排序小。 Insertion sort ,一个额外的改进,甚至更好,它比大多数非常小的数组(少于十个元素左右)的 O(n log n) 算法更快,因此严肃的库排序原语将切换到它来解决小的子问题.

关于c++ - 这是什么类型的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834609/

相关文章:

python - 有效地确定 "how sorted"列表是,例如。编辑距离

java - 使用java从小到大排序数组

帕斯卡冒泡排序

java - 二维冒泡排序java程序,数组中有字符串和整数

C++:如何将任何可迭代类型作为函数参数传递

c++ - 操作溢出不起作用c++

c++ - 将鼠标光标隐藏在 Windows 中的特定客户区域

c++ - 使用for循环递归地乘以数组中的元素

Javascript 比较时间戳

c# - 在 C# 中冒泡排序最优雅的方法是什么?