按降序排列数组?

时间:2014-01-24 21:50:29

标签: java arrays loops assign

我看过比较器和算法,但我对它们没有多大意义。来自java.util.Collections的比较器。 所以我选择使用它:

//return an array in descending order, using set algorithm
    public int[] descendSort()
    {
       int[] tempArray = new int[temps.length];

       for (int i = temps.length-1; i <= 0; --i)  
       {
            tempArray[i] = temps[i];
       }

    return tempArray;
    }         

我在客户端创建的数组是:

int[] temps1 = new int[]{45, 76, 12, 102, 107, 65, 43, 67, 81, 14};

我的输出结果如下:。

The temperatures in descending order is:  0 0 0 0 0 0 0 0 0 0

WHY ????

4 个答案:

答案 0 :(得分:8)

永远不会满足条件i <= 0

此外,tempArray[i] = temps[i];只会将数组按原样复制

要么:

   for (int i = temps.length-1; i >= 0; --i)  
   {
        tempArray[temps.length-1-i] = temps[i];
   }

或只是

   for (int i = 0; i < temps.length; ++i)  
   {
        tempArray[temps.length-1-i] = temps[i];
   }

答案 1 :(得分:1)

单行(不适用于基元):

Integer[] temps1 = new Integer[] { 45, 76, 12, 102, 107, 65, 43, 67, 81, 14 };

Arrays.sort(temps1, Collections.reverseOrder());

答案 2 :(得分:0)

你如何排序任何东西,你只是从一个数组复制到另一个数组。这是使用选择排序的排序代码。            public int [] descsort(){             for(int i = 0,imax)//如果有更大的元素,请跟踪它                  int index = j;

       int temp=temps[max];
       temps[max]=temps[index];

       temps[index]=temp;

     }
        return temps;
   }

答案 3 :(得分:0)

按降序排序整数数组可以这种方式完成:

比较器比较器=新比较器(){

        @Override
        public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);
        }
    };
    Integer[] array = new Integer[] { 9,1, 0, 7, 0, 0, 0, 5, 0 };
    Arrays.sort(array, comparator);
    System.out.println(Arrays.toString(array));