标题:冒泡排序的程序出错,我排了一下午,汗
只看楼主
灯、、
Rank: 4
等 级:业余侠客
威 望:2
帖 子:133
专家分:288
注 册:2010-6-21
结帖率:90%
已结贴  问题点数:20 回复次数:11 
冒泡排序的程序出错,我排了一下午,汗
就是这个题了,我弄了一下午,一直没找到错在哪?无语

public class TestDateSort {
    public static void main(String[] args) {
     Date[] days = new Date[5];
     days[0] = new Date(2006, 1, 1);
     days[1] = new Date(2006, 1, 2);
     days[2] = new Date(2006, 1, 1);
     days[3] = new Date(2010, 2, 3);
     days[4] = new Date(2010, 2, 1);
     bubbleSort(days);
     for(int i = 0;i<days.length;i++)
     System.out.println(days[i]);
            }
            
 public static Date[] bubbleSort(Date[] a) {
                int t= a.length;
                for(int i = t-1;i>=1;i--) {
                    for(int j = 0;j<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;
                }
    }
搜索更多相关主题的帖子: 冒泡 
2010-07-23 17:20
灯、、
Rank: 4
等 级:业余侠客
威 望:2
帖 子:133
专家分:288
注 册:2010-6-21
得分:0 
对着正确答案,一步一步的看,一模一样,还是错
2010-07-23 17:21
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
得分:10 
程序代码:
import java.util.Date;

public class TestDateSort {
    public static void main(String[] args) {
        Date[] days = new Date[5];
        days[0] = new Date(2006, 1, 1);
        days[1] = new Date(2006, 1, 2);
        days[2] = new Date(2006, 1, 1);
        days[3] = new Date(2010, 2, 3);
        days[4] = new Date(2010, 2, 1);
        bubbleSort(days);
        for (int i = 0; i < days.length; i++)
            System.out.println(days[i].getYear() + "," + days[i].getMonth() + "," + days[i].getDay());
    }

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

2010-07-23 18:00
灯、、
Rank: 4
等 级:业余侠客
威 望:2
帖 子:133
专家分:288
注 册:2010-6-21
得分:0 
回复 3楼 linjx0123
也不对,正确答案里没用包
2010-07-23 18:07
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
得分:0 
答案是死的.人是活的.对不对....
总不可能少了个;号或少个边}你还是一定得按它说的写吧?

C#超级群 74862681,欢迎大家的到来!
2010-07-23 22:22
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
得分:10 
程序代码:
//import java.util.Date;

public class TestDateSort {
    public static void main(String[] args) {
        Date[] days = new Date[5];
        days[0] = new Date(2006, 1, 1);
        days[1] = new Date(2006, 1, 2);
        days[2] = new Date(2006, 1, 1);
        days[3] = new Date(2010, 2, 3);
        days[4] = new Date(2010, 2, 1);
        bubbleSort(days);
        for (int i = 0; i < days.length; i++)
            System.out.println(days[i]);
    }

    public static Date[] bubbleSort(Date[] a) {  //冒泡排序
        int t = a.length;
        boolean flag = true;
        for (int i = 0; i < t-1 && flag; i++) {
            flag = false;
            for (int j = 0; j < t-i-1; j++) {
                if (a[j].compareTo(a[j + 1]) > 0) {
                    Date temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                    flag = true;
                }
            }
        }
        return a;
    }
}

class Date implements Comparable  //自己写的Date类实现Comparable接口
{
    private int year;
    private int month;
    private int day;
    public Date() {
    }

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int compareTo(Object arg0) {   //重写compareTo方法
        Date date=(Date) arg0;  
        if(this.year!=date.year){
           if (this.year>date.year) return 1;
           else return -1; 
        }else{
            if(this.month!=date.month){
                if(this.month>date.month)return 1;
                else return -1;
            }else{
                if(this.day>date.day)return 1;  
                else if(this.day<date.day)return -1;  
                else return 0;  
            }  
        }  
          
    }  
    public String toString() {   //重写toString方法
        return this.year+"-"+this.month+"-"+this.day;  
    }   


}


[ 本帖最后由 lampeter123 于 2010-7-24 09:02 编辑 ]

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-07-24 08:57
yuanxl33
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:64
注 册:2010-4-11
得分:0 
注意:TestDateSort.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
3楼的我一编译就这样,你们能通过?我用的jdk6.0
好像只有版主那样重写接口了
版主问个问题,能不能用别的类包来实现?不用重写的

[ 本帖最后由 yuanxl33 于 2010-7-25 04:52 编辑 ]
2010-07-25 04:47
yuanxl33
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:64
注 册:2010-4-11
得分:0 
回复 6楼 lampeter123
能不能用别的包实现?重写太繁琐
2010-07-25 04:54
jiugongzi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-25
得分:0 
我运行通过了~~用的是jdk6.5
2010-07-25 19:22
baifenghan
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:258
专家分:952
注 册:2006-3-17
得分:0 
有几个建议:
1.Date已经实现了comparable接口了,有了compareTo(Data otherData)方法,所以不必自己再去实现这个接口,直接使用就可以了。
2.如果仅仅是为了锻炼冒泡算法,倒是可以试试.如果是为了对一些日期进行排序就不用这么麻烦了,在Arrays这个类中,jdk已经帮我们实现了一下高效的排序算法了,就是sort(Object[] array)
2010-07-27 00:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-313827-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.630803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved