我看过比较器和算法,但我对它们没有多大意义。来自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 ????
答案 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));