日期:2014-05-20  浏览次数:20811 次

关于新手的“冒泡排序”一个不解
求大侠拯救
我得出的最后结果都是:
yrar:month:day==2007 5 6
yrar:month:day==2008 2 6
yrar:month:day==2003 5 6
yrar:month:day==2012 9 6
yrar:month:day==2008 5 6
没有排序的结果!

代码如下:
class Date{
int year,month,day;
Date(int y,int m,int d)
{
year=y;month=m;day=d;
}
public int compare(Date date){
return year>date.year ? 1
: year<date.year ? -1
: month>date.month ? 1
: month<date.month ? -1
: day>date.day ? 1
: day<date.day ? -1 : 0 ;
}
public String toString(){
return "yrar:month:day=="+year+" "+month+" "+day;

}
}
public class TestDateSort {
  public static void main(String args[]){
Date d[]=new Date[5];
d[0]=new Date(2007,5,6);
d[1]=new Date(2008,2,6);
d[2]=new Date(2003,5,6);
d[3]=new Date(2012,9,6);
d[4]=new Date(2008,5,6);  
bubble(d);
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}

  }
  public static Date[] bubble(Date[] a){
int len=a.length;
for(int i=len-1;i>=1;i--){
for(int j=0;i<=i-1;j++){
if(a[j].compare(a[j+1])>0)
{
Date temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
 
}
}
}
return a;
  }
}

------解决方案--------------------
public int compare(Date date){
return year>date.year ? 1
: year<date.year ? -1
: month>date.month ? 1
: month<date.month ? -1
: day>date.day ? 1
: day<date.day ? -1 : 0 ;
}

代码改改吧...别采用条件判断式,改用if else