冒泡排序

来源:互联网 发布:*在c语言中是什么意思 编辑:程序博客网 时间:2024/06/05 20:42

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

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");      }    }  } 


原创粉丝点击