冒泡排序法之冒泡、沉底

本文详细解析了冒泡排序算法的不稳定性,并对比了冒泡排序与沉底排序的区别,通过具体代码实例深入探讨了这两种排序方法的实现与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直使用的是下面这样的排序方法,后来发现这种排序算法其实是不稳定的。

for (int i = 0; i < list.Length; i++) 

 { 

   for (int j = i + 1; j < list.Length; j++) 

   { 
      if (list[i] > list[j]) 
      
          int temp = list[i]; 
          list[i] = list[j]; 
          list[j] = temp; 
       
   
}
也一直以为这就是冒泡排序法,后来复习时看到书上说,冒泡排序发的时候,才恍然大悟,冒泡排序法思想只有两种,一种是冒泡法,一种是沉底法。
从上至下扫描为沉底法,会使大数沉底,需要注意的是“底”越来越高,即每次扫描尾索引减小;从下至上扫描为冒泡法,会使小数浮顶,需要注意的是
"顶"越来越低,即每次扫描头索引增大。而且冒泡排序法是稳定的排序算法。下面分别是冒泡、沉底的写法:
冒泡:
for(int i=0;i<m;i++)
 for(int j=m-1;j>i;j--)
{
  if(zs_1[j]<zs_1[j-1])
  {
  int temp1=zs_1[j-1];
  zs_1[j-1]=zs_1[j];
  zs_1[j]=temp1;
   }
 }
沉底:

for(int i=0;i<m;i++)
   for(int j=0;j<m-1-i;j++)
   {

  if(zs_1[j]>zs_1[j+1])

  {

  int temp1=zs_1[j];

  zs_1[j]=zs_1[j+1];

  zs_1[j+1]=temp1;

  }

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值