冒泡排序

冒泡排序:
算法思想:每一轮的大小比较中,选出最大的数往最后放。我们可以这样理解,假设现有10个数要进行排序,10个数要两两比较,相当于9次,那么假设有n个数,比较轮数就是n-1次,此时已经确定了最外层的循环次数

forint i=0;i<9;i++

之后再往下走,要确定每一轮次的比较次数
以下面十个数字为例进行说明:

8、5、3、2、5、8、4、7、1、9

第一轮次下:

  1. 8和5进行比较,8>5, 交换顺序,此时:
  2. 5、8.........;
  3. 8和3进行比较,8>3, 交换顺序,此时:
  4. 5、3、8.....;
  5. 8和2进行比较,8>2, 交换顺序,此时:
  6. 5、3、2、8.....;
  7. 8和5进行比较,8>5, 交换顺序,此时:
  8. 5、3、2、5、8.....;
  9. 8和8进行比较,8=8, 不交换顺序,此时:
  10. 5、3、2、5、8、8.....;
  11. 8和4进行比较,8>4, 不交换顺序,此时:
  12. 5、3、2、5、4、8、8.....;
  13. 8和7进行比较,8>7, 交换顺序,此时:
  14. 5、3、2、5、4、8、7、8.....;
  15. 8和1进行比较,8>1, 交换顺序,此时:
  16. 5、3、2、5、4、8、7、1、8.....;
  17. 8和9进行比较,8<9, 不交换顺序,此时:
  18. 5、3、2、5、4、8、7、1、8、9.....;
    此刻,结束以第一轮次的比较!
    第二轮次:
    按照上面同理,十个数字中的第二个数开始,一次往后比较。
    同样的道理,我们在比较的同时,可以发现,第一轮下,我们比较9次,第二轮下比较8次,总结的规律就是,里层的循环,每次要将外面的轮次减掉。所以代码如下:
 forint i=0;i<9;i++for(int j=0;j<9-i;j++)

如此计算,可以得出冒泡排序的时间复杂度为
O(n*n
C语言代码如下

#include<stdio.h>
int main()
{
int temp;
int a[10]={8,5,3,2,5,8,4,7,1,9}
forint i=0;i<9;i++for(int j=0;j<9-i;j++)
   {
     if(a[i]>a[j])
     {
       temp=a[i];
       a[i]=a[j];
       a[j]=temp;
     }
   }
 for(int i=0;i<10;i++)
 {
    printf(%d”,a[i]);
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值