黑马程序员技术交流社区

标题: 选择排序方法2! 小疑问求解答! [打印本页]

作者: 迷茫不堪的年纪    时间: 2015-10-10 18:22
标题: 选择排序方法2! 小疑问求解答!
class  ArrayDemo   
{  public static void main(String[]args)         {
   int[]arr={2.5.1.6.3};

    System.out.print("数组排序前:");


    printArray(arr);              //调用下面定义的输出语句
   selectSofr(arr);               //主函数下面定义的排序方法
  System.out.print("数组排序后:");
   printArray(arr);              //调用下面定义的输出语句
    }

public staic void selectSort(int[]arr)  //选择排序方法定义
   {
     for(x=0;x<arr.length-1;x++)     //      x<arr.length-1  是代表最大值?  还是只是长度减掉最小值的长度?
        {
              int  num=arr[x];                //定义个变量代表  数组里的一个元素哦
              int index=x;                //  定义角标                                     --------------------俩者一起来定义最小值和最小值的角标, 效率提高
      for(y=x+1;y<arr.length;y++)   //同理
           {
                 if(num>arr[y])               //条件式
                 num=arr[y];
                 index=y;
                   }
           }
         if(index !=x)           //条件式, 只要角标值不等于x的角标,及执行以下的操作,如果最小值就是x自己就没必要执行这个了!
                 swap(arr,x,index)        //这个大家请看下面这个定义哦
        }
}
   
       public static void  swap(int[]arr,int a ,int b)         //这玩意儿的定义提升了复用性,不用像第一次方法一样每一次搞个换位都打一堆。
      int temp = arr[a];
     arr[a]=arr[b]  ;
     arr[b]=temp;
   }
public static void pritnArray(int[]arr)   //之前帖子方法1有讲
      {
     System.out.print("[");
   for(int x=0;x<arr.length;x++)
             {
   if(x != arr.length-1);
    System.out.print(arr[x]+",");
elas
  System.out.print(arr[x]+"]");
               }
   }


不确定点求解惑:1.x<arr.length-1  是代表最大值?  还是只是长度减掉最小值的长度?
                            2.swap的意义?
  有错误及时指出哦, 谢谢。

作者: ly631960324    时间: 2015-10-10 19:30
x<arr.length-1   ——arr.length-1 是最大角标;x<最大角标,因为后面定义了y=x+1,则y<arr.length,则符合要求。解释一下:如果数组长度为5,运用选择排序,那么角标最大为4,则x最大只能是3,因为最后是角标3的元素和角标4的元素比较。
swap的意义——定义的一个方法,用来简化程序,当需要对元素进行交换是,就可以直接调用这个方法,简便了许多。
作者: yuyucoo    时间: 2015-10-10 19:50
1、数组arr的最大下标是arr.length-1,因为数组下标是从0开始的   2、swap是static修饰的静态方法,调用不用new对象,可以直接类名.方法名()调用,本文中wap()函数是把数组arr下标a和b的值交换。
作者: 迷茫不堪的年纪    时间: 2015-10-10 21:35
yuyucoo 发表于 2015-10-10 19:50
1、数组arr的最大下标是arr.length-1,因为数组下标是从0开始的   2、swap是static修饰的静态方法,调用不用 ...

下标是什么意思? 还有是  本文中的wap是  swap吧?
作者: 迷茫不堪的年纪    时间: 2015-10-10 22:03
第一个回答的不错。




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