您的位置:首页 > 其它

排序算法系列之冒泡排序

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;、、、、 }

程序

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: