冒泡排序算法:
最优时间复杂度为o(n),即当且只当元素本身就是按照从小到大的顺序排列的(这里默认冒泡排序从小到大排列)。
最差时间复杂度为o(n^2),当其中有任何一组数据不是按照从小到大排列。

#include<iostream>
using namespace std;
void print_array(int* array, int length)
{cout << "array:" << endl;for (int i = 0; i < length; i++){cout << *(array + i)<< " ";}cout << endl;
}
void bubble_sort(int array[], int length)
{if (length <= 1) return;for (int i = length - 1; i > 0; i--){int flag = 1;for (int j = 0; j < i; j++){if (array[j] > array[j + 1]){int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;flag = 0;}}if (flag) break;}
}
int main()
{int array[12] = { 1,11,12,4,2,6,9,0,3,7,8,2 };print_array(array, 12);bubble_sort(array, 12);print_array(array, 12);return 0;
}

算法改进:当数据的尾部局部有序的时候,将需要排序的最大值移到该位置处

#include<iostream>
using namespace std;
void print_array(int* array, int length)
{cout << "array:" << endl;for (int i = 0; i < length; i++){cout << *(array + i)<< " ";}cout << endl;
}
void bubble_sort(int array[], int length)
{if (length <= 1) return;for (int i = length - 1; i > 0; ){int flag = 0;for (int j = 0; j < i; j++){if (array[j] > array[j + 1]){int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;flag = j;}}i = flag;}
}
int main()
{int array[12] = { 1,11,12,4,2,6,9,0,3,7,8,2 };print_array(array, 12);bubble_sort(array, 12);print_array(array, 12);return 0;
}

【排序算法】冒泡排序的三种方法相关推荐

  1. matlab 分水岭法,分水岭算法Matlab实现——三种方法 | 学步园

    clear,clc%三种方法进行分水岭分割 %读入图像 filename='sar1.bmp'; f=imread(filename); Info=imfinfo(filename); if Info ...

  2. python中pca算法_Python使用三种方法实现PCA算法

    主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...

  3. java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...

    在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...

  4. php 快速排序函数,PHP实现快速排序算法的三种方法

    摘要:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序 ...

  5. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  6. 算法导论中求解时间复杂度的三种方法

    这一章讲的是递归式(recurrence),递归式是一组等式或不等式,它所描述的函数是用在更小的输入下该函数的值来定义的. 本章讲了三种方法来解递归式,分别是代换法,递归树方法,主方法. 1.代换法( ...

  7. C++结构体多级排序的三种方法

    C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序  1.自定义比较器 //自定义比较函数 bo ...

  8. js实现阶乘算法的三种方法

    js实现阶乘算法的三种方法 // 非递归写法 function f(n) {if (0 === n) {return 1;}let res = 1;for (let i = 1; i <= n; ...

  9. pca算法python实现_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

最新文章

  1. Python 实现杨辉三角
  2. BDFeatureMatch_yalmip_vlfeat
  3. base64 能放数组里面么_数组:总结篇
  4. 问题-[Delphi]用LoadLibrary加载DLL时返回0的错误
  5. java中转为整形的编码_java中Unicode编码转化为中文
  6. 阿里云邀您参加 2020 年数据湖高峰会议
  7. 华为的哪个字体像苹果的_华为手机手写怎么变字体 苹果手写字体怎么变粗
  8. 匈牙利算法【匹配问题】
  9. 采矿工具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. Elasticsearch和Kibana版本对应关系
  11. 拼多多店铺营业执照相关问题
  12. 各个小组对“躲避小球”游戏的评价
  13. ro模式数据库mysql_ro数据库-和ro数据库相关的内容-阿里云开发者社区
  14. 搭配安卓手机领夹式麦克风的PD快充方案来了LDR6023C 分享给大家
  15. EJB----EJB 概念
  16. “牛气冲天”预交卷,2022年雨花区会怎样“如虎添翼”?
  17. Qt 代码规范(叶海)
  18. XPS问题收集及解答
  19. 依赖注入是什么意思?获取依赖的方式是什么?
  20. AI时代,普通白领必用的软件机器人

热门文章

  1. 电流电压曲线 vc源码_电瓶修复—充电曲线你知道多少?
  2. 人脸对齐(十七)--DenseReg
  3. 项目管理实践之版本控制工具SVN
  4. 纯新手DSP编程--5.31--硬件中断管理
  5. 湘潭大学计算机科学,湘潭大学计算机科学和技术一级学科.doc
  6. ORC 和 Parquet比较入门
  7. Windows核心编程调用打印机
  8. jQuery之事件绑定到触发全过程及知识点补充
  9. TensorFlow从入门到理解(六):可视化梯度下降
  10. 【SQL Server】CONVERT() 函数