Java:按降序排序未排序的数组
我有一个未排序的对象数组。根据对象内部的最高值,我需要知道如何按降序对我的数组进行排序。Java:按降序排序未排序的数组
我需要使用for循环来做到这一点,而不是简单的方法。
我已经做到了这一点,但它似乎有一个问题:
student[] temp=new student[s.length];
for (int i=0;i<s.length;i++)
{
if (s[i].GetGpa() > s[i + 1].GetGpa())
{
temp[i] = s[i];
}
}
我应该如何使用循环做呢?
这应该让你开始。您需要创建自己的Comparator
,然后致电Collections.Sort()
。
Collections.sort(List<T> list, Comparator<? super T> c)
public class Student implements Comparable { ... }
Arrays.sort(students);
List<Object> list = Arrays.asList(students);
Collections.reverse(list);
students = list.toArray();
这是行不通的,因为你需要在每个学生对象上调用GetGpa()来进行比较。 – 2010-04-18 18:32:12
uff,是的,我的不好 但可能实现Comparable可以保存它 – Xorty 2010-04-18 18:34:22
是的,这基本上是我的建议。 – 2010-04-18 18:35:10
我建议看Wikipedia文章sorting algorithms。你的代码失败了,因为你只比较每个元素与下一个元素 - 但这不是一个排序算法,因为要正确放置在第一个位置,元素需要大于全部其他元素,而不仅仅是下一个。
此外,使用小写的类名非常反对Java编码标准。
和方法: getGpa() - 很好的Java; GetGpa() - C#像 – Xorty 2010-04-18 18:40:15
for (int j=0;j<s.length;j++) {
for (int i=0;i<s.length - 1 - j;i++)
{
if (s[i].GetGpa() > s[i + 1].GetGpa())
{
student temp = s[i];
s[i] = s[i+1];
s[i+1] = temp;
}
}
}
有一个问题来当我的 “主” 显示java.lang.NullPointerException \t在sun.misc.FloatingDecimal.readJavaFormatString(来源不明) \t是java把这段代码 异常的线程。 lang.Double.parseDouble(Unknown Source) \t at main_function.main(main_function.java:35) – Bader 2010-04-18 19:52:48
for(int i=0;i<s.length;i++)
{
for(int j=i+1;j<s.length;j++)
{
if(s[j].GetGpa()>s[i].GetGpa())
{
student[] temp=new student[5];
temp[j]=s[j];
s[j]=s[i];
s[i]=temp[j];
}
}
}
请注意'new student [5]'将创建一个固定的数组。尝试使用超过4的索引(0-4是5个值)将导致“异常”。 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html – 2010-04-18 23:05:03
此处还有一个演示不同排序算法的小程序:http://www.cs.oswego.edu/~mohammad /classes/csc241/samples/sort/Sort2-E.html – 2010-04-18 23:07:50
看起来这是一个家庭作业 - 贝德需要做硬盘的方式,没有内置排序。 @Bader:得到一本关于排序算法的书。 – 2010-04-18 18:31:58
@Bader - 什么是“简单的方法”?如果这是家庭作业,您应该这样标记它。 – 2010-04-18 18:34:10
Duplicates:http://stackoverflow.com/questions/1694751/java-array-sort-descending http://stackoverflow.com/questions/1946668/sorting-using-comparator-descending-order-user-defined-classes – 2010-04-18 18:39:57