冒泡排序

冒泡排序仅仅在相邻两个元素间进行比较和交换。下面的程序实现了对某个整型数组中的元素进行冒泡排序,它在保证逻辑正确的前提下,避免了冗余的比较。请填写缺少的代码。

int[]targetArr  = {3,22,11,5,400,99,20,22,5};

for(inti=0; i<targetArr.length-1; i++)

{

    for(int j=0; j<______________; j++)

    {

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

        {

          inttmp = targetArr[j];

          targetArr[j]= targetArr[j+1];

          targetArr[j+1]= tmp;

        }

     }

}

 

总结:关键点有两个一个是数组的值进行置换,还有一个就是双重循环!外循环表示的是进行多少趟比较,而内循环表示就是在每一趟中对每一个数进行大小的比较,然后再进行置换!每一趟中都把最大值放到最后!而下一趟就不用上一趟的最大值进行比较!这就是冒泡排序的基本算法!

     也可以这么理解,有n个数就要进行(n-1)次比较!为什么是(n-1)次,根据冒泡排序的算法,每一趟的目的就是把当前这一趟的最大的值放到最后!比较(n-1)次后,第n趟也就不用比较都可以得知!例如有三个数:5、6、4.

第一趟:5、4、6

第二趟:4、5、6

 

完整代码:

publicclass Demo3
{
    public static void main (String args[])
    {
      int[] targetArr  = {3,22,11,5,400,99,20,22,5};
      for(int i=0; i<targetArr.length-1;i++)
      {
        for(int j=0; j<targetArr.length-i-1; j++)
        {
          if(targetArr[j]>targetArr[j+1])
          {
             inttmp = targetArr[j];
            targetArr[j] = targetArr[j+1];
            targetArr[j+1] = tmp;       
           }                  
        }
      }
      for(int i=0; i<targetArr.length; i++)
      {
        System.out.print(targetArr[i]+"\t");
      }
    }
  }
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值