【排序算法】冒泡排序的三种方法
冒泡排序算法:
最优时间复杂度为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;
}
【排序算法】冒泡排序的三种方法相关推荐
- matlab 分水岭法,分水岭算法Matlab实现——三种方法 | 学步园
clear,clc%三种方法进行分水岭分割 %读入图像 filename='sar1.bmp'; f=imread(filename); Info=imfinfo(filename); if Info ...
- python中pca算法_Python使用三种方法实现PCA算法
主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...
- java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...
在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...
- php 快速排序函数,PHP实现快速排序算法的三种方法
摘要:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序 ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- 算法导论中求解时间复杂度的三种方法
这一章讲的是递归式(recurrence),递归式是一组等式或不等式,它所描述的函数是用在更小的输入下该函数的值来定义的. 本章讲了三种方法来解递归式,分别是代换法,递归树方法,主方法. 1.代换法( ...
- C++结构体多级排序的三种方法
C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序 1.自定义比较器 //自定义比较函数 bo ...
- js实现阶乘算法的三种方法
js实现阶乘算法的三种方法 // 非递归写法 function f(n) {if (0 === n) {return 1;}let res = 1;for (let i = 1; i <= n; ...
- pca算法python实现_三种方法实现PCA算法(Python)
主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...
最新文章
- Python 实现杨辉三角
- BDFeatureMatch_yalmip_vlfeat
- base64 能放数组里面么_数组:总结篇
- 问题-[Delphi]用LoadLibrary加载DLL时返回0的错误
- java中转为整形的编码_java中Unicode编码转化为中文
- 阿里云邀您参加 2020 年数据湖高峰会议
- 华为的哪个字体像苹果的_华为手机手写怎么变字体 苹果手写字体怎么变粗
- 匈牙利算法【匹配问题】
- 采矿工具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Elasticsearch和Kibana版本对应关系
- 拼多多店铺营业执照相关问题
- 各个小组对“躲避小球”游戏的评价
- ro模式数据库mysql_ro数据库-和ro数据库相关的内容-阿里云开发者社区
- 搭配安卓手机领夹式麦克风的PD快充方案来了LDR6023C 分享给大家
- EJB----EJB 概念
- “牛气冲天”预交卷,2022年雨花区会怎样“如虎添翼”?
- Qt 代码规范(叶海)
- XPS问题收集及解答
- 依赖注入是什么意思?获取依赖的方式是什么?
- AI时代,普通白领必用的软件机器人