排序算法系列之冒泡排序
2015-06-24 17:44
369 查看
冒泡排序
思想:1.首先将所有待排序的数字放入工作列表中。2. 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。3. 重复2号步骤(倒数的数字加1。例如:第一次到倒数第二个数字,第二次到倒数第三个数字,依此类推...),直至再也不能交换。每次冒泡得到最大的数存在数组尾数上。
注:函数模板定义的一般形式
template <class 数据类型参数标示符>
函数返回值类型函数名(参数表)
{
函数体
}
例如: templat <class T1,class T2>
T1 fun(T1 a,T2 b)
{
T2=d;
}
如果主调函数中有: int x; double y;、、、、 fun(x,y);则系统将用实参x的数据类型int和y的数据类型double的代替函数模板中的T1和T2,生成模板函数
int fun(int a,double b) { double d;、、、、 }
程序:
分析:
稳定性:冒泡在两数相等的情况下不交换位置,所以是稳定的。
时间复杂度:最差时间复杂度O(n²),最优时间复杂度O(n),平均时间复杂度O(n²)
辅助空间复杂度 :O(1)
思想:1.首先将所有待排序的数字放入工作列表中。2. 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。3. 重复2号步骤(倒数的数字加1。例如:第一次到倒数第二个数字,第二次到倒数第三个数字,依此类推...),直至再也不能交换。每次冒泡得到最大的数存在数组尾数上。
注:函数模板定义的一般形式
template <class 数据类型参数标示符>
函数返回值类型函数名(参数表)
{
函数体
}
例如: templat <class T1,class T2>
T1 fun(T1 a,T2 b)
{
T2=d;
}
如果主调函数中有: int x; double y;、、、、 fun(x,y);则系统将用实参x的数据类型int和y的数据类型double的代替函数模板中的T1和T2,生成模板函数
int fun(int a,double b) { double d;、、、、 }
程序:
template<classT> voidBubbleSort(T *x,constintN) { for(intk= N-1; k>0 ;k--) { for(inti=0; i<k; i++) { if(x[i]> x[i+1]) { Ttemp = x[i]; x[i]= x[i+1]; x[i+1]= temp; } } } }
分析:
稳定性:冒泡在两数相等的情况下不交换位置,所以是稳定的。
时间复杂度:最差时间复杂度O(n²),最优时间复杂度O(n),平均时间复杂度O(n²)
辅助空间复杂度 :O(1)
相关文章推荐
- CDOJ邱老师选妹子(数位DP)
- python __file__的绝对路径与import的搜索路径
- 一张金融IC卡的交易流程(一)-----基本数据Tag
- 使用phonegap建立安卓webapp项目及其问题总结
- 利用WebMatrix安装drupal7 基于IID+SqlExpress
- 27. 搭建Git服务器
- Programming Quick Start Guide翻译
- 55.统计字符串中大小写的个数
- 奇特的网格加载效果
- 如何提高代码质量1
- 平行志愿需研究 拉开梯度合理定位
- JCOP Shell常用指令
- GlusterFS节点离线修复方法
- 关于cocos引擎初学时那点事(环境搭建,安卓打包等)
- iOS NSThread 的三种创建线程的方法 非常简单好用
- 【Hadoop】2、Hadoop开山篇之虚拟机下ubuntu配置hadoop
- 18道Shell高级编程企业实战题及参考答案
- 最新《VRay 2.0 for sketchup渲染教程》发布芹
- 26. 配置别名
- 在Android中不要将数据存储在Application类中,