黑马程序员技术交流社区

标题: 选择排序编译出现问题 [打印本页]

作者: 张龙跃    时间: 2013-4-25 21:00
标题: 选择排序编译出现问题
本帖最后由 张龙跃 于 2013-4-25 21:37 编辑

代码
class xuanze
{
        public static void selectSort(int[] arr)
        {
                for (int x=0; x<arr.length-1 ; x++) //arr.length-1是因为最后一个角标不用再比了,也可以直接写arr.length
                {
                        for(int y=x+1; y<arr.length; y++) //y=x+1是因为0角标跟0角标比没意思,直接跟1角标比
                        {
                                if(arr[x]>arr[y])
                                {
                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        arr[y]= temp;

                                }
                        }
                }
        }
        public static void main(String[] args)
        {
                int[] arr = {5,1,6,4,2,8,9};
                selectSort(arr);
                System.out.println(int[] arr);
        }

}





作者: 尹丽峰    时间: 2013-4-25 21:04
本帖最后由 尹丽峰 于 2013-4-25 21:27 编辑

System.out.println(int[] arr); 有这么写的吗??
public class arraydemo {
public static void main(String args[]) {
  int[] arr = new int[] { 3, 5, 6, 1, 23, 4 };
  Arrxzpx(arr);
  showArr(arr);
  
  
}
public static void Arrpx(int arr[]) {
  for (int x = 0; x < arr.length; x++) {
   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;
    }
   }
  }
}
public static void Arrxzpx(int arr[])
{
  for(int x=0;x<arr.length;x++)
  {
   for(int y=0;y<arr.length;y++)
   {
    if(arr[y]<arr[x])//这是你要的
    {
     int temp = arr[x];
     arr[x]=arr[y];
     arr[y]=temp;
    }
   }
  }
}
public static void showArr(int arr[])
{
  for(int x=0;x<arr.length;x++)
  {
   System.out.print(arr[x]+"\t");
  }
}
}

作者: harborbest    时间: 2013-4-25 21:12
System.out.println(int[] arr);
写法不对,应该这样写
  1. for (int i = 0; i < arr.length; i++) {
  2.                     System.out.print(arr[i]+" ");
  3.                                
  4.                         }
复制代码

作者: smile_joe    时间: 2013-4-25 21:21
package cn.joe.FileandRecursion;

public class Test1 {
        public static void main(String[] args)
        {
                int [] arr = {5,1,6,4,2,8,9};
                selectSort(arr);
//            System.out.println(int[] arr); 你这个输出的是什么,输出变量?
//                用遍历方法在遍历得到全部
                sort(arr);
        }
//        遍历方法
        private static void sort(int[] arr) {
                for(int i=0;i<arr.length;i++) {
                        System.out.println(arr[i]);
                }
        }
//        排序
        public static void selectSort(int[] arr)
    {
            for (int x=0; x<arr.length-1 ; x++) //arr.length-1是因为最后一个角标不用再比了,也可以直接写arr.length
            {
                    for(int y=x+1; y<arr.length; y++) //y=x+1是因为0角标跟0角标比没意思,直接跟1角标比
                    {
                            if(arr[x]>arr[y])
                            {
                                    swap(arr, x, y);

                           }
                    }
            }
    }
//        数组调换方法
        private static void swap(int[] arr, int x, int y) {
                int temp = arr[x];
                arr[x] = arr[y];
                arr[y]= temp;
        }

}

//对你的程序进行了完善,感觉你对需求都不是明确,希望互相学习.....

作者: 一川    时间: 2013-4-25 21:30
main函数中的输出语句错了,System.out.println(int[] arr);  数组是不可以整体输出的.
可以用循环语句输出,最好写个方法,可以复用(排序前和排序后)
如:
  1. public static void PrintArray(int[] arr){
  2.      for(int i = 0; i < arr.length; i++){
  3.           System.out.print(arr[i]+" ");   
  4.      }
  5.      System.out.println();
  6. }
复制代码

作者: 一川    时间: 2013-4-25 21:31
main函数中的输出语句错了,System.out.println(int[] arr);  数组是不可以整体输出的.
可以用循环语句输出,最好写个方法,可以复用(排序前和排序后)
如:
  1. public static void PrintArray(int[] arr){
  2.      for(int i = 0; i < arr.length; i++){
  3.           System.out.print(arr[i]+" ");   
  4.      }
  5.      System.out.println();
  6. }
复制代码

作者: 337091921    时间: 2013-4-25 22:05
我看了你的程序,你犯了一个大错误就是:你定义的函数是无返回值类型的。所以你不能直接在主函数输出;可以在定义函数里面输出你的结果。要想在main输出就要遍历一个函数。希望你谨记
作者: 赵崇友    时间: 2013-4-25 22:07
System.out.println(int[]arr);
这句是不正确的。int[]arr是在声明arr是一个int类型的数组,是不能够打印的。使用增强for循环可以简化输出语句。我做了一下改动,楼主可以看看。
  1. class SelectSort
  2. {
  3.         public static void main(String []args)
  4.         {
  5.                 int [] arr={5,1,6,4,2,8,9};
  6.                 selectSort(arr);
  7.                 for (int i:arr )
  8.                 {
  9.                         System.out.print(i+",");
  10.                 }
  11.         }
  12.         public static int[] selectSort(int[]arr)
  13.         {
  14.                 for (int x=0;x<arr.length-1 ;x++ )
  15.                 {
  16.                         for (int y=x+1;y<arr.length ;y++ )
  17.                         {
  18.                                 if (arr[x]>arr[y])
  19.                                 {
  20.                                         int temp=arr[x];
  21.                                         arr[x]=arr[y];
  22.                                         arr[y]=temp;
  23.                                 }
  24.                         }
  25.                 }
  26.                 return arr;
  27.         }
  28. }
复制代码
另外建议楼主写代码可以排下版。





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