首页 > 编程语言 > 详细

冒泡排序原理以及实现

时间:2020-12-02 17:33:31      阅读:31      评论:0      收藏:0      [点我收藏+]

今天学习的排序算法是冒泡排序,这个冒泡的问题在大一真是一点理解不了,现在终于是可以理解了。

所谓冒泡排序,就像水中的气泡一样,小的数让他浮到最上边(当然这个最上边你可以自己定义,你可以说数组第一个元素是上边(从小到大),也可以说最后一个元素是最上边(从大到小))。

这里我介绍的是从大到小排序。

对于n个数,我们只需要排n-1趟(因为我们每一趟就可以确定一个元素的最终位置,还剩下最后一个元素他肯定就是最大或者最小,所以不用排了,就是n-1趟)

对于每一趟,我们需要知道这个数跟他后一个数的大小关系,比他后边那个数小我们就让他浮起来(即跟后边的数交换一下位置),如果他大于等于后边的数我们就让他卡在那里不要动,转而去浮那个比他小的数,以此类推。所以对于第0次,我们需要前后比较9次,对于第1次,我们需要前后比较8次(最后一个已经就位了,就不要去比较他了,所以将比较的上限向前进一),以此类推,第i次需要比较9-i次.

下面我以排10个整数为例。

#include <iostream>

using namespace std;

int main()
{
    int a[10];//排10个数
    int temp;

    cout<<"输入10个数:";
        for(int i=0; i<10; i++)
            cin>>a[i];

    for(int i=0; i<9; i++)//10个数只需要排9次
        for(int j=0; j<9-i; j++)//每一次需要前后比较的次数为9-i
        {
            if(a[j]<a[j+1])//如果前一个数比后一个小就让他浮上去
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }

        }

    cout<<"排序后结果:";
    for(int i=0; i<10; i++)
        cout<<a[i]<<ends;


}

 

冒泡排序原理以及实现

原文:https://www.cnblogs.com/xxxyyy/p/14074394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!