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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐学松 黑马帝   /  2012-6-6 23:06  /  1580 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐学松 于 2012-6-6 23:26 编辑

class test   
{
        public static void main(String[] args)                          
        {
                int jiu []={12,14,54,65,31};

               
                   getindex(jiu);// 输出没问题,但是排序还是乱序输出,而不是排序整理好输出
                        

                   printArray(jiu);      
           }

  public static void getindex(int [] arr)
        {
        
                for (int x=0;x<arr.length-1 ;x++ )
                  {
                        for (int y=x+1;y<arr.length-1 ;y++ )

                                        {
                                                if (arr[x]>arr[y])
                                                {
                                                        int temp=arr[x];
                                                        arr[x]=arr[y];
                                                        arr[y]=temp;

                                                        
                                                }
                                        }         
                        }
        }
        public static void printArray(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]+"]");

                }               
        }
               
        
        
}

5 个回复

倒序浏览
楼主做的是选择排序,具体代码应该是:
  1. public static void selectSort(int[] arr)  
  2.     {  
  3.         for(int x=0; x<arr.length-1;x++)  
  4.         {  
  5.             for(int y=x+1;y<arr.length;y++)  //注意y的值
  6.             {  
  7.                 if(arr[x]>arr[y])  
  8.                 {  
  9.                     
  10.                     int temp = arr[x];
  11.                     arr[x] = arr[y];
  12.                     arr[y] = temp;
  13.                      
  14.                   
  15.                 }  
  16.             }  
  17.         }  
  18.     }  
复制代码
  1. public static void printArray(int[] arr)  
  2.     {  
  3.         System.out.print("[");  
  4.         for(int x=0;x<arr.length;x++)  //注意x的取值.
  5.         {  
  6.             if(x!=arr.length)  
  7.                 System.out.print(arr[x]+", ");  
  8.             else  
  9.                 System.out.println(arr[x]+"]");  
  10.         }  
  11.     }  
复制代码
有两点错误:y的取值范围是y<arr.length,因为角标是比实际元素个数少一的.
还有x的取值范围x<arr.length,因为同上.

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你这里用的选择排序法,第二个for循环中 数组中最后一个元素没有参与比较
   for (int x=0;x<arr.length-1 ;x++ )
                  {
                        for (int y=x+1;y<arr.length-1 ;y++ ) // 这里修改成  y < arr.length 或者 y <= arr.length-1
回复 使用道具 举报
lz代码写错啦,你排序了前面4个,最后一个木有排
把内循环里面改成lengh就好了
回复 使用道具 举报
龙秋地 发表于 2012-6-6 23:17
楼主做的是选择排序,具体代码应该是:有两点错误:y的取值范围是y

非常感谢
回复 使用道具 举报
罗文杰 发表于 2012-6-6 23:19
你这里用的选择排序法,第二个for循环中 数组中最后一个元素没有参与比较
   for (int x=0;x ...

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