黑马程序员技术交流社区

标题: 求解啊 弄不明白 排序! [打印本页]

作者: 许瑞航老师    时间: 2012-7-14 20:12
标题: 求解啊 弄不明白 排序!
本帖最后由 许瑞航 于 2012-7-14 21:02 编辑

package hellow;

public class abc {
           public static void selectsort(int [] arr)
           {
                  for(int i=0;i<arr.length-1;i++)
                  {
                          for(int y=i+1;y<arr.length;i++)
                          {
                                  if (arr>arr[y])
                                                  {
                                          int temp=arr;
                                          arr=arr[y];
                                          arr[y]=temp;
                                                  }
                                          
                                                  }
                          
                          }
                  }
   public static void main (String[]args)
   {
           
        int [] arr={1,2,3,4,5,6};
        selectsort(arr);
        www(arr);
        

   }
   public static void  www(int[]arr)
   {
           for(int i=0;i<arr.length;i++)
           {
                   if(i!=arr.length-1)
                   System.out.print(arr);
           }
   }
  

                  }

编译各种出错啊、、

作者: 许瑞航老师    时间: 2012-7-14 21:00
★╃小胖╃☆ 发表于 2012-7-14 20:41
package hellow;//楼主这里打包了就要有打包的动作,即javac -d . abc.java

public class abc {//类名首字 ...

嗯 弄完了  好使了、    主要错误还是出现在y++那  那个输出语句是因为我要写括号 为了规范  让我删了 换了个乱序的 试了 也好使 非常感谢 我说我冒泡排序是好使  但是少一位呢  哈哈哈 马虎了 麻烦您了
作者: 陈冲    时间: 2012-7-14 21:07
本帖最后由 陈冲 于 2012-7-14 21:13 编辑
  1. public class Demo
  2. {
  3.         public static void selectSort(int[] arr)
  4.     {
  5.                 for(int x=0;x<arr.length-1;x++)
  6.         {
  7.                         /*
  8.                         内循环是从arr[x]开始,与后边的元素依次进行比较,
  9.                         如果a[x]大,则将arr[x]与后边的元素交换,这样最终实现的结果是arr[x]存放数列中的最小值
  10.                         */
  11.                         for(int y=x+1;y<arr.length;y++)//这里应该是y++
  12.                                 {
  13.                                         if (arr[x]>arr[y])
  14.                                                 {
  15.                                                         int temp=arr[x];
  16.                             arr[x]=arr[y];
  17.                             arr[y]=temp;
  18.                          }                       
  19.                 }         
  20.                 }
  21.         }
  22.    public static void main (String[]args)
  23.    {
  24.          
  25.         int [] arr={6,5,3,1,2,4};
  26.         selectSort(arr);
  27.         www(arr);
  28.       

  29.    }
  30.    public static void  www(int[]arr)
  31.    {
  32.            for(int i=0;i<arr.length;i++)
  33.            {
  34.                    if(i!=arr.length-1)
  35.                                          System.out.print(arr[i]+",");
  36.                                    else
  37.                                            System.out.println(arr[i]);//不加这句的话就少输出了一个
  38.            }
  39.    }
  40. }
复制代码
代码比较混乱,我帮你整理了一下,你看看能不能明白

以这个数组为例
arr={6,5,3,1,2,4};
arr[0]依次与arr[1]、arr[2]、……arr[5]比较,每次比较后交换得数组:
{6,5,3,1,2,4}→
{5,6,3,1,2,4}→
{3,5,6,1,2,4}→
{1,5,6,3,2,4}→
{1,5,6,3,2,4}(arr[0]<arr[4],不交换)→
{1,5,6,3,2,4}(a[rr0]<arr[5],不交换)
然后外循环再次运行,arr[1]与后面的元素比较

作者: 许瑞航老师    时间: 2012-7-14 21:11
陈冲 发表于 2012-7-14 21:07
代码比较混乱,我帮你整理了一下,你看看能不能明白

看明白了 多谢~




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