【排序算法】冒泡排序法 & C++实现 | [实例过程分析]

简介: 冒泡排序法 & C++实现

●冒泡排序法


1.简要介绍

冒泡排序算法代码段:

for (int i = 0; i < len-1; i++)
  {
        int temp;
  for(int j=len-1;j>i;j--)
  { 
    if (a[j] > a[i])
    {
    temp = a[j];
    a[j ] = a[i];
    a[i] = temp;
    }
  }
  }

2.图形化演示

下面以代码程序排序中后五个数为例(从大到小排序),进行一个大致的图形排序理解。


       进行第一行中的排序,①不交换②交换③不交换④交换;


       进行第二行中的排序,①不换②不换③不换;


       进行第三行中的排序,①不交换②不交换;


       进行第四行中的排序,①不交换;


       第五行排序完成。

124c61d0a8aa70bbd5397ab37213c3b3_5b3ec71e97304b53bdb9561aac5a0dcd.png


3.代码如下

#include<iostream>
using namespace std;
#define size 10
class bubblesort {
public:
  void bubblesort_1(int a[],int len);
  void shownumber();
  int arr[size];
};
void bubblesort::bubblesort_1(int a[],int len)
{
  int temp;
  for (int i = 0; i < len-1; i++)
  {
  for(int j=len-1;j>i;j--)
  { 
    if (a[j ] > a[i])
    {
    temp = a[j ];
    a[j ] = a[i];
    a[i] = temp;
    }
  }
  //测试代码
  cout << i + 1 << ":" << " ";
  for (int k = 0; k < len; k++)
  {
    cout << a[k] << " ";
  }
  cout << endl;
  }
}
void bubblesort::shownumber()
{
  for (int i = 0; i < size; i++)
  {
  cout << this->arr[i] << " ";
  }
}
void text()
{
  bubblesort bs;
  for (int i = 0; i < size; i++)
  {
  cin >> bs.arr[i];
  }
  bs.bubblesort_1(bs.arr, size);
  bs.shownumber();
}
int main()
{
  text();
}

4.结果如下

4cff96706111e91f39f848d2c848c004_1915a151b15b4f29b75c4886617b4f51.png



目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
66 4
|
12天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
36 1
|
29天前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
存储 算法 搜索推荐
对二叉堆的简单分析,c和c++的简单实现
这篇文章提供了对二叉堆数据结构的简单分析,并展示了如何在C和C++中实现最小堆,包括初始化、插入元素、删除最小元素和打印堆的函数,以及一个示例程序来演示这些操作。
39 19
|
2月前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【10月更文挑战第8天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
2月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
570 0
高精度算法(加、减、乘、除,使用c++实现)
|
2月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
48 0