动图看懂冒泡排序

Posted 小智编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动图看懂冒泡排序相关的知识,希望对你有一定的参考价值。

冒泡排序(Bubble Sort)是最常用的排序算法。我们知道它的时间复杂度是O(n^2)。


冒泡排序的标准C++代码如下所示:


  1. #include<iostream>  

  2. #include<algorithm>  

  3. using namespace std;  

  4. const int N = 10001;  

  5. int a[N];  

  6. int main()  

  7. {  

  8.     int n;  

  9.     cin >> n;  

  10.     for (int i=0; i<n; i++)  

  11.     {  

  12.         cin >> a[i];  

  13.     }  

  14.     //进行n-1轮冒泡  

  15.     for (int i=n-1; i>=1; i--)  

  16.     {  

  17.         //每轮进行i次的比较  

  18.         for (int j=0; j<i; j++)  

  19.         {  

  20.             //相邻两个元素比较,若逆序就交换  

  21.             if (a[j]>a[j+1])  

  22.             {  

  23.                 swap(a[j], a[j+1]);  

  24.             }  

  25.         }  

  26.     }  

  27.     //输出排序结果  

  28.     for (int i=0; i<n; i++)  

  29.     {  

  30.         cout << a[i] << " ";  

  31.     }   

  32.     return 0;  

  33. }  


如果有n个数,就要进行n-1轮冒泡。第一轮要进行n-1次比较,第二轮进行n-2次比较,如此类推,第n-1轮进行1次比较。每次比较,如果两个数是逆序,就进行位置交换。


上面的代码是不是有点不容易看懂,让我们利用动画来看懂冒泡排序的原理吧。


在一般的情况下,是这样排序的


动图看懂冒泡排序

在最差的情况下,是这样排序的


在几乎有序的情况下,是这样排序的


注:算法动画产生自Algorithms.






以上是关于动图看懂冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

❤《算法入门》之冒泡排序,动图展示过程

算法漫游指北(第七篇):冒泡排序冒泡排序算法描述动图演示代码实现过程分析时间复杂度和选择排序算法描述动图演示代码实现过程分析时间复杂度

算法漫游指北(第七篇):冒泡排序冒泡排序算法描述动图演示代码实现过程分析时间复杂度和选择排序算法描述动图演示代码实现过程分析时间复杂度

如何优化冒泡排序?

八大排序算法——冒泡排序(动图演示 思路分析 实例代码java 负杂度分析)

前台美眉能看懂的冒泡排序