排序算法系列之冒泡排序

冒泡排序

思想: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(xy);则系统将用实参x的数据类型inty的数据类型double的代替函数模板中的T1T2,生成模板函数 int fun(int adouble 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) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值