黑马程序员技术交流社区

标题: 对int型数组排序不用冒泡 [打印本页]

作者: 易东俊    时间: 2014-6-11 16:33
标题: 对int型数组排序不用冒泡
/*
请帮我把这种排序修改一下,使其能正常排序。
*/

public static void sort(int[] arr)
{
          int max = 0;
          for(int x = 0 ; x < arr.length-1 ; x++)
          {
                    for(int y = x+1 ; y < arr.length; y++)
                    {
                               if(arr[y] > arr[x])
                               {
                                           arr[max] = arr[y] ;
                                           arr[y] = arr[x] ;
                                           arr[x] = arr[max] ;
                                }
                    }
          }
          Tool.kk(arr);
}
/*打印数组中的每个元素的*/
class Tool
{
              public static void kk(int[] arr)
              {
                            for(int o = 0 ;o <arr.length; o++)
                            {
                                          System.out.print(arr[o]+",");
                            }
              }

作者: Gaara33    时间: 2014-6-11 17:27
这个max定义有误,当arr[y]>arr[x]时,是让他们调换位置,而不是用arr[max],arr[max]在你的定义中就是arr[0],
作者: Gaara33    时间: 2014-6-11 17:30
这个max定义有误,当arr[y]>arr[x]时,是让他们调换位置,而不是用arr[max],arr[max]在你的定义中就是arr[0],


建议arr[max]全部改为   max   

另外max这个名字起的不太好,容易让人误解,一般用temp
定义一个便令temp
temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
用来作为中间变量调换arr[y]和arr[x]的值
作者: 易东俊    时间: 2014-6-11 18:28
Gaara33 发表于 2014-6-11 17:30
这个max定义有误,当arr[y]>arr[x]时,是让他们调换位置,而不是用arr[max],arr[max]在你的定义中就是arr[0 ...

非常有用,语言简练。
作者: Gaara33    时间: 2014-6-11 18:35
Gaara33 发表于 2014-6-11 17:30
这个max定义有误,当arr[y]>arr[x]时,是让他们调换位置,而不是用arr[max],arr[max]在你的定义中就是arr[0 ...

不客气,大家都是一起来交流的




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