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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 帅飞 于 2014-5-7 01:08 编辑

class arrPaixu
{
        public static void main(String[] args)
        
        {               
        
          int [] arr={52,13,65,13,96,22,162};


          arrprint(arr);//打印初始数组-----------------结果为 52 13 65 13 96 22 162

                    System.out.println();//换行

          arrsheng(arr);//升序排列---------------------结果为 13 13 22 52 65 96 162

                    System.out.println();//换行

          arrprint(arr);//打印当前内存里的数组---------结果为 13 13 22 52 65 96 162

                    System.out.println();//换行

          arrjiang(arr);//降序排列---------------------结果为 162 96 65 52 22 13 13

                    System.out.println();//换行

          arrprint(arr);//打印当前内存里的数组---------结果为 162 96 65 52 22 13 13



        }



//降序排列
        public static void arrjiang(int[] arr)
        {
        

                for ( int x=0;x<arr.length ;x++ )
                {
                        for (int y=x+1;y<arr.length;y++ )
               
                 if (arr[x]<arr[y])
                        {
                        
                        arr[x]=arr[x]^arr[y];
                        arr[y]=arr[x]^arr[y];
                        arr[x]=arr[x]^arr[y];

/*  x=x^y;
    y=x^y;
    x=x^y;


问题:这样是无法实现的,为什么???怎么能用角标的变换,,而不是元素值的变换来实现排序问题???
*/
                        
                        }
                System.out.print(arr[x]+"\t");
                }
        }


//升序排列
        public static void arrsheng(int [] arr)
        {
                for ( int x=0;x<arr.length ;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;               
                        }
                        System.out.print(arr[x]+"\t");
                }        
        
        }


        //打印当前内存中的数组
        public static void arrprint(int [] arr)
        {
                for (int x=0;x<arr.length ; x++)
                {
                System.out.print(arr[x]+"\t");
                }

        }
               
        
}



—————————————————————————————————————————————————————



问题是,,使用选择排序时,,在升降序函数里,关于数组内两个元素相比较,然后交换,然后再与其他元素比较,这个运算过程是否可以用元素的角标实现?如果可以实现的话,请附代码,谢谢。









1 个回复

倒序浏览
如果用C语言来解释的话,数组的角标实际上是存储对应值的内存地址, 比较内存地址没有意义吧,
所以,没法用角标来实现吧,
而且,排序本来就是比较角标对应元素的值,比较角标有什么用?不太明白你到底想问什么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马