冒泡排序的程序出错,我排了一下午,汗
就是这个题了,我弄了一下午,一直没找到错在哪?无语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;
}
}
搜索更多相关的解决方案:
冒泡
----------------解决方案--------------------------------------------------------
对着正确答案,一步一步的看,一模一样,还是错
----------------解决方案--------------------------------------------------------
程序代码:
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;
}
}
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;
}
}
----------------解决方案--------------------------------------------------------
回复 3楼 linjx0123
也不对,正确答案里没用包 ----------------解决方案--------------------------------------------------------
答案是死的.人是活的.对不对....
总不可能少了个;号或少个边}你还是一定得按它说的写吧?
----------------解决方案--------------------------------------------------------
程序代码:
//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;
}
}
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 编辑 ]
----------------解决方案--------------------------------------------------------
注意:TestDateSort.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
3楼的我一编译就这样,你们能通过?我用的jdk6.0
好像只有版主那样重写接口了
版主问个问题,能不能用别的类包来实现?不用重写的
[ 本帖最后由 yuanxl33 于 2010-7-25 04:52 编辑 ]
----------------解决方案--------------------------------------------------------
回复 6楼 lampeter123
能不能用别的包实现?重写太繁琐 ----------------解决方案--------------------------------------------------------
我运行通过了~~用的是jdk6.5
----------------解决方案--------------------------------------------------------
有几个建议:
1.Date已经实现了comparable接口了,有了compareTo(Data otherData)方法,所以不必自己再去实现这个接口,直接使用就可以了。
2.如果仅仅是为了锻炼冒泡算法,倒是可以试试.如果是为了对一些日期进行排序就不用这么麻烦了,在Arrays这个类中,jdk已经帮我们实现了一下高效的排序算法了,就是sort(Object[] array)
----------------解决方案--------------------------------------------------------