当前位置:   article > 正文

图文解释冒泡排序

冒泡排序

 作者主页:

lovewold_的博客_CSDN博客

文章主要内容:

       

        了解冒泡排序

文章目录

目录

一、冒泡排序是什么?

二、图文解释

总结


一、冒泡排序是什么?

冒泡排序:

        冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它会遍历若干次需要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!

二、图文解释

对一一个a[6]={20,40,10,5,50,30}进行冒泡排序

        对于六个元素进行五次循环的左右比较,将两者较大数依次往后传递,这就是冒泡排序的图形理解

根据这种方法:
第2趟排序完之后,数列中a[5...6]是有序的。
第3趟排序完之后,数列中a[4...6]是有序的。
第4趟排序完之后,数列中a[3...6]是有序的。
第5趟排序完之后,数列中a[1...6]是有序的。

第5趟排序之后,整个数列也就是有序的了。

代码演示:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a[6]={20,40,10,5,50,30};
  5. int i = 0;
  6. for(j=0;j<5;j++)//外部总共要遍历n-1次(n为元素个数)
  7. {
  8. for(i=0;i<5-j;i++)//每一次将最大值放在最后以后,前面的数两者比较次数-1,只需要和最大值前面的元素比较
  9. {
  10. if(a[i]>a[i+1])//比较相邻两者大小关系,如果前面元素大则需要改变位置
  11. {
  12. trmp = a[i];//通过中间量交换两者位置
  13. a[i]=a[i+1];
  14. a[i+1]=temp;
  15. }
  16. }
  17. }
  18. return 0;
  19. }

优化:

        再冒泡排序过程中,我们能发现,在第二趟结束以后,整个数列已经有序了,但程序依旧会进入循环比较。这个时候我们能通过中间量返回值来判断是否已经有序。

        若两者交换了位置则是无序,如何一整趟下来都没有交换位置,则已经有序,可以停止接下来的判断了。

 优化代码:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a[6]={20,40,10,5,50,30};
  5. int i = 0;
  6. for(j=0;j<5;j++)//外部总共要遍历n-1次(n为元素个数)
  7. {
  8. int k = 0;//有序判断控制器
  9. for(i=0;i<5-j;i++)//每一次将最大值放在最后以后,前面的数两者比较次数-1,只需要和最大值前面的元素比较
  10. {
  11. if(a[i]>a[i+1])//比较相邻两者大小关系,如果前面元素大则需要改变位置
  12. {
  13. trmp = a[i];//通过中间量交换两者位置
  14. a[i]=a[i+1];
  15. a[i+1]=temp;
  16. k=1;
  17. }
  18. }
  19. if(k==0)//当等于0则没有交换
  20. {
  21. break;
  22. }
  23. }
  24. return 0;
  25. }


总结

        以上就是今天要讲的内容,本文仅仅简单介绍了冒泡排序使用,而冒泡排序思维提供了大量能使我们快速便捷地解决问题的方案。希望大家多多支持。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号