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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 惠晖 中级黑马   /  2012-10-28 00:30  /  1643 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
给定指定数组按照从小到大排列



*/


class ArrayTest6
{
        public static void selectSort (int[] arr)
    {
                for (int x=0; x<arr.length-1 ;x++ )
                {
                        for (int y=x+1;y<arr.length ;y++ )
                        {
                                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);
               


        }
}
为什么可以编译 却不能运行, 最好详细点解释为什么  提前thanks

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

5 个回复

倒序浏览
                                    循环这里是不是重复定义了呢?    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);
                                 
                                 for (int i= 0;i<arr.length-1 ;i++ )
                                 {
                                         if (i<arr.length-2)                                         
                                                 System.out.print(arr[i]+",");                                         
                                         else
                                                 System.out.print(arr[i]);
                                 }
                 


         }

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
正确方法:

class ArrayTest6
{
     public static void selectSort (int[] arr)
     {
                for (int x=0; x<arr.length; x++ )
                 {
                         for (int y=x+1;y<arr.length-x-1; y++ )
                         {
                                ////每个数比较n次,如果values[y]>values[y+1]成立,否则交换。
                                 if (arr[x]>arr[y+1])
                                 {
                                         int temp =arr[x];
                                         arr[x] =arr[y+1] ;
                                         arr[y+1] =temp;
                                 }
                         }
                 }
         
        }

        public static void main(String[] args)
         {
                 int[] arr ={5,1,6,4,2,8,9};
            
                //排序
          selectSort(arr);
        for(int i=0; i<arr.length; ++i){
                   System.out.println("index:"+i+"value:"+values);
        }
        }
}

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
可以运行,只是你没有写输出语句;
求最大:System.out.println(arr[arr.length-1]);//添加到 selectSort 方法最外面。
求整个数组:循环取出。
for(int i=0; i<arr.length; ++i)
{
System.out.println(arr[i]);
}

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
main方法中用for遍历数组输出  或者在selectSort 中遍历数组输出   没有输出语句  编译能通过  运行也能通过   但是不写输出语句  你看不到结果  就误以为是不能运行。

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

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