文档章节

算法 - 冒泡排序 C++

ChungZH
 ChungZH
发布于 07/19 19:21
字数 515
阅读 6
收藏 0

欢迎前往我的博客网站:chungzh.cn !

大家好,我是ChungZH。今天我给大家讲一下最基础的排序算法:冒泡排序(BubbleSort)。

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大(可以相反),就交换他们两个。
  2. 对每一对相邻的元素做同样的工作,从开始第一对到结尾的最后一对。
  3. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

下面开始代码实现:

#include <iostream>
#include <algorithm>
using namespace std;
void PrintArrayElem(int n, int a[]);    // 输出数组的所有元素
int main()
{
    
    int n = 5;
    int a[n] {5, 4, 3, 2, 1};
    int i;
    int j;

    PrintArrayElem(n, a);
    cout << endl;

    for (i = 0; i < n - 1; i++)     
    {
        bool flag = true;   // 如果直至循环结束仍然为true,则表示此次循环没有进行交换,也就是数组已经是有序的了

        for (j = 0; j < n - 1 - i; j++)  
        {
            if (a[j] > a[j + 1])  // 如果前一个数大于后一个数,交换。
            {
                swap(a[j], a[j+1]);
                flag = false;
            }
            PrintArrayElem(n, a);
            cout << "i=" << i << " " << "j=" << j << endl << endl; 
        }
        if (flag)
        {
            break;
        }
        
    }
    return 0;
}

void PrintArrayElem(int n, int a[])
{
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
}

运行结果:

5 4 3 2 1

4 5 3 2 1
i=0 j=0

4 3 5 2 1
i=0 j=1

4 3 2 5 1
i=0 j=2

4 3 2 1 5
i=0 j=3

3 4 2 1 5
i=1 j=0

3 2 4 1 5
i=1 j=1

3 2 1 4 5
i=1 j=2

2 3 1 4 5
i=2 j=0

2 1 3 4 5
i=2 j=1

1 2 3 4 5
i=3 j=0

好了,这篇文章就到这里。我们下篇文章见~


作者:ChungZH

特别鸣谢 & 审核:未央

© 著作权归作者所有

共有 人打赏支持
ChungZH
粉丝 0
博文 3
码字总数 1511
作品 0
佛山
【转载】数据结构利器之私房STL

数据结构利器之私房STL 此系列的文章适合初学有意剖析STL和欲复习STL的同学们。 学过c++的同学相信都有或多或少接触过STL。STL不仅仅是c++中很好的编程工具(这个词可能有点歧义,用类库更恰...

悠米海
2012/12/02
0
0
CSDN回帖得分大全(近两年)

√ vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] √ 为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] √ CFileFind::FindFile 支持通配...

junwong
2012/03/09
0
0
STL vector 介绍连载1-2-3

STL简介: STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是...

天远
2012/05/20
0
0
STL list链表的用法详解

------------------------------------------------------------------------------- 原来... STL list链表的用法详解 本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通...

nao
2014/04/10
0
0
STL,ATL,WTL的联系与区别

STL,ATL,WTL的联系与区别 STL 即 Standard Template Library STL(标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时...

IMGTN
2012/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
35分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
49分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
59分钟前
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
6
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部