图文解释冒泡排序

 作者主页:

lovewold_的博客_CSDN博客

文章主要内容:

       

        了解冒泡排序

图文解释冒泡排序_第1张图片

 

文章目录

目录

一、冒泡排序是什么?

二、图文解释

总结



一、冒泡排序是什么?

冒泡排序:

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

二、图文解释

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

图文解释冒泡排序_第2张图片

 

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

 

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

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

 

代码演示:

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

return 0;
}

优化:

图文解释冒泡排序_第3张图片

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

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

 优化代码:

#include
int main()
{
int a[6]={20,40,10,5,50,30};
int i = 0;

for(j=0;j<5;j++)//外部总共要遍历n-1次(n为元素个数)
{
    int k = 0;//有序判断控制器
    for(i=0;i<5-j;i++)//每一次将最大值放在最后以后,前面的数两者比较次数-1,只需要和最大值前面的元素比较
    {
        if(a[i]>a[i+1])//比较相邻两者大小关系,如果前面元素大则需要改变位置
        {
            trmp = a[i];//通过中间量交换两者位置
            a[i]=a[i+1];
            a[i+1]=temp;
            k=1;
        }
    }
    if(k==0)//当等于0则没有交换
    {
        break;
    }
}

return 0;
}

 


 

 

总结

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

图文解释冒泡排序_第4张图片

你可能感兴趣的:(C语言猎杀时刻,python,机器学习,开发语言)