黑马程序员技术交流社区

标题: 看看这冒泡排序 [打印本页]

作者: demown    时间: 2014-4-11 23:40
标题: 看看这冒泡排序
不知道错哪了 编译过不去求解

class Renmingzi{
public static void main(String[] ages)
{  
  
  int[] arr={1,2,3,7,6,5,4,};
  bullinet(arr);
  arrA(arr);
}
public static void arrA(int[] arr){
System.out.println("[");
  for(int x=0;x<arr.length;x++)
  {
   if(x!=arr.length-1){
    System.out.println("x="+arr[x]+",");}
    else{
     System.out.println("x="+arr[x]+"]");
   }
  }}
  public static void bullinet(int[] arr)
{
   for(int x = 0;x<=arr.length-1;x++)
   {
    for(int y = 0;y<=arr.length-1;y++)
    {
     if(arr[y]<arr[y+1])
     {
      int temp=arr[y];
      arr[y]=arr[y+1];
      arr[y+1]=temp;
        
     }
   
    }
   }
}



作者: caijunsong    时间: 2014-4-12 00:37
  1. class Demo{
  2. public static void main(String[] ages)
  3. {  
  4.   
  5.   int[] arr=new int[]{1,2,3,7,6,5,4,};//你这里声明的数组语法就错了
  6.   arrA(arr);
  7.   bullinet(arr);
  8.   arrA(arr);
  9. }
  10. public static void arrA(int[] arr)
  11. {
  12.           System.out.print("[");
  13.           for(int x=0;x<arr.length;x++)
  14.           {
  15.                    if(x!=arr.length-1)
  16.                    {
  17.                                 System.out.print("x="+arr[x]+",");//这里的打印我给你改成不换行的了
  18.                    }
  19.                         else
  20.                         {
  21.                             System.out.print("x="+arr[x]+"]");//同上
  22.                         }
  23.           }
  24. }
  25.          public static void bullinet(int[] arr)
  26.          {
  27.                    //x不能<=arr.length-1,等于的话就是比较7次了
  28.                    for(int x = 0;x<arr.length-1;x++)
  29.                    {
  30.                                 //y不能小于等于,否则就计算7次,同时冒泡的比较是逐级递减的,你没有减x
  31.                                 for(int y = 0;y<arr.length-1-x;y++)
  32.                                 {
  33.                                          if(arr[y]<arr[y+1])
  34.                                          {
  35.                                                   int temp=arr[y];
  36.                                                   arr[y]=arr[y+1];
  37.                                                   arr[y+1]=temp;   
  38.                                          }
  39.                                 }
  40.                    }
  41.          }
  42. }
  43. //冒泡排序的算法就是从第一次开始与其余的每一个比较,把最大的一个放在适合的位置
  44. //有n个元素 那么久要把1,。。。n-1,的元素和其之后的元素比较(最后一个不需要比) 每个要比n-1,。。。1次
复制代码

作者: 清风夜独醉    时间: 2014-4-12 02:44
首先什么是冒泡排序?
冒泡排序就是依次比较相邻的两个数,如果你是按升幂排序,那么就是每次比较完把小数放前面,大数放后面;如果是按降幂排序,就是把大数放前面,小数放后面。
冒泡排序每轮的比较次数都是依次递减的。比如你这数组有7个元素,第一轮比较6次,第二轮比较5次,依次类推……
用二重循环实现,就是外循环变量设为x,内循环变量设为y。则外循环重复6次,内循环依次重复6,5,...,1次。每次进行比较的两个元素都是与内循环y有关的,它们可以分别用a[y]和a[y+1]标识,x的值依次为1,2,...,6,对于每一个x,y的值依次为1,2,...6-x。
所以你检查一下你内外循环的次数就不难发现错在哪了。你的外循环重复了7次,而你的内循环也没有递减。
作者: demown    时间: 2014-4-12 09:40
你们回复还是没明白  不过很感谢 就是在我内循环为啥递减呢 递减成啥了   我自己搞明白了就是把 y=< 把等号去掉就行了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2