A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵阳 中级黑马   /  2012-6-21 11:29  /  1898 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵阳 于 2012-6-21 12:05 编辑
  1. /*利用冒泡排序对数组进行排序,不过使相邻的数组元素进行比较,互换位置*/
  2. class Demo
  3. {
  4. public static void main(String[] args)
  5. {
  6. int[]arr={6,3,8,4,9,1,0};
  7. shao_1(arr);
  8. shao(arr);
  9. shao_1(arr);
  10. }
  11. public static void shao(int[]arr) //封装函数,冒泡排序
  12. {
  13. for (int x=0;x<arr.length-1; x++)
  14. {
  15. for (int y=0;y<arr.length-x-1 ;y++ )
  16. {
  17. if (arr[y]>arr[y+1])
  18. {
  19. int arr[y]=arr[y]^arr[y+1];
  20. arr[y+1]=arr[y]^arr[y+1];
  21. arr[y]=arr[y]^arr[y+1];

  22. }
  23. }
  24. }
  25. }

  26. public static void shao_1(int[]arr)
  27. {
  28. System.out.print("[");
  29. for(int x=0;x<arr.length;x++)
  30. {
  31. if (x!=arr.length-1)
  32. System.out.print(arr[x]+",");
  33. else
  34. System.out.println(arr[x]+"]");
  35. }
  36. }
  37. }
复制代码
我只不过将互换位置换了形式,这个真心不懂啊
结果为啥是
D:\java\zuoye\maopao>javac  Demo.java
Demo.java:19: 错误: 需要']'
                                        int arr[y]=arr[y]^arr[y+1];
                                                ^
Demo.java:19: 错误: 非法的表达式开始
                                        int arr[y]=arr[y]^arr[y+1];
                                                 ^

7 个回复

倒序浏览
int arr[y]=arr[y]^arr[y+1];
这是怎么回事?呵呵,写错了吧
回复 使用道具 举报
int arr[y]=arr[y]^arr[y+1];//定义了一个新的变量int,变量名不能用[],所以报错,去掉int就好了。这里不用重新定义arr[y]

arr[y+1]=arr[y]^arr[y+1];

arr[y]=arr[y]^arr[y+1];

回复 使用道具 举报
/*利用冒泡排序对数组进行排序,不过使相邻的数组元素进行比较,互换位置*/
class Demo
{
public static void main(String[] args)
{
int[]arr={6,3,8,4,9,1,0};
shao_1(arr);
shao(arr);
shao_1(arr);
}
public static void shao(int[]arr) //封装函数,冒泡排序
{
for (int x=0;x<arr.length-1; x++)
{
for (int y=0;y<arr.length-x-1 ;y++ )
{
if (arr[y]>arr[y+1])
{
int arr[y]=arr[y]^arr[y+1];  //兄弟建议你把这个int去掉. arr[y] 就已经是个整型数组了,你这里再定义有点多余.   如果你真的还需要再定义的话int arr[y]  y的值也要重新定义,for循环里的变量是局部的.局部变量运算完内存就释放了.
arr[y+1]=arr[y]^arr[y+1];
arr[y]=arr[y]^arr[y+1];
}
}
}
}
public static void shao_1(int[]arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if (x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
回复 使用道具 举报
/*利用冒泡排序对数组进行排序,不过使相邻的数组元素进行比较,互换位置*/

class Demo1

{

public static void main(String[] args)
{

int[]arr={6,3,8,4,9,1,0};

shao_1(arr);

shao(arr);

shao_1(arr);

}

public static void shao(int[]arr) //封装函数,冒泡排序

{

for (int x=0;x<arr.length-1; x++)

{

for (int y=0;y<arr.length-x-1 ;y++ )

{

if (arr[y]>arr[y+1])

{

arr[y]=arr[y]^arr[y+1];//如果你在这样写int arr[y]=arr[y]^arr[y+1];就是表示你重新声明了一个
      //叫arr[y]的int类型的变量;而这个arr[y]不但和arr数组的中元素重名;
      //而且arr[y]里面的y也是个变量;这样的归语法结构是JVM不能识别的;所以
      //编译是要报错;
      

arr[y+1]=arr[y]^arr[y+1];

arr[y]=arr[y]^arr[y+1];

}

}

}

}

public static void shao_1(int[]arr)

{

System.out.print("[");

for(int x=0;x<arr.length;x++)

{

if (x!=arr.length-1)

System.out.print(arr[x]+",");

else

System.out.println(arr[x]+"]");

}

}

}
回复 使用道具 举报
吴琼 发表于 2012-6-21 11:52
/*利用冒泡排序对数组进行排序,不过使相邻的数组元素进行比较,互换位置*/
class Demo
{

对y怎么重新定义啊
回复 使用道具 举报
int arr[y]=arr[y]^arr[y+1];//去掉int就行了,或者你定义一个变量记录,而把下面的arr[y]替换了,如
int a=arr[y]^arr[y+1];
arr[y+1]=a^arr[y+1];
arr[y]=a^arr[y+1];
回复 使用道具 举报
就是换位时出了问题
写成
int a=arr[y]^arr[y+1];
arr[y+1]=a^arr[y+1];
arr[y]=a^arr[y+1];

换位还有另外一种换法
我写了一个例子程序

冒泡排序
从右往左,依次退出比较
原理:相邻的两个元素比较,如果前一位大于后一位,就换位,元素最后一位出现最值。
后然最后一位不参与排序。此次类推
class Test
{
     public static void main(String [] args)
     {
             int[] arr = {5,4,7,2,9,6,10};
             for(int x = 0;x<arr.length-1;x++)
            {
                   //-x:让每一次比较的元素减少,-1:避免角标越界
                   for(int y = 0;y<arr.length-x-1;y++)
                   {
                         if(arr[y]>arr[y+1])
                         {
                               //定义一个第三方变量换位
                                  int temp = arr[y];
                                  arr[y] =arr[y+1];
                                  arr[y+1]=temp;

                           }
                       }
                    }
  
                  for(int a = 0;a<arr.length;a++)
                 {
                  System.out.println("arr["+a+"]="+arr[a]);
                 }
        }
    }


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马