比较多个日期大小,并对这些日期进行排序
2008-12-06 14:03
471 查看
算法分析:
public int compare(Date date)
{
/*
* 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
* 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
*/
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 class TestDate
{
public static void main(String[] args)
{
Date[] days = new Date[10];
days[0] = new Date(2008, 8, 9);
days[1] = new Date(2008, 8, 20);
days[2] = new Date(2007, 8, 9);
days[3] = new Date(2007, 11, 9);
days[4] = new Date(2006, 8, 9);
days[5] = new Date(2006, 8, 9);
days[6] = new Date(2005, 8, 9);
days[7] = new Date(2005, 9, 9);
days[8] = new Date(2005, 8, 9);
days[9] = new Date(2009, 9, 9);
Date.buffSort(days);
for (int i = 0; i < days.length; i++)
{
System.out.println(days[i]);
}
}
}
// 比较日期大小
class Date
{
int year;
int month;
int day;
public Date(int y, int m, int d)
{
this.year = y;
this.month = m;
this.day = d;
}
public int compare(Date date)
{
/*
* 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
* 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
*/
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 static Date[] buffSort(Date[] dates)
{
Date temp;
for (int i = dates.length - 1; i > 0; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (dates[j].compare(dates[j + 1]) > 0)
{
temp = dates[j];
dates[j] = dates[j + 1];
dates[j + 1] = temp;
}
}
}
return dates;
}
// 重写toString方法
public String toString()
{
return year + "-" + month + "-" + day;
}
}
运行结果:
2005-8-9
2005-8-9
2005-9-9
2006-8-9
2006-8-9
2007-8-9
2007-11-9
2008-8-9
2008-8-20
2009-9-9
public int compare(Date date)
{
/*
* 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
* 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
*/
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 class TestDate
{
public static void main(String[] args)
{
Date[] days = new Date[10];
days[0] = new Date(2008, 8, 9);
days[1] = new Date(2008, 8, 20);
days[2] = new Date(2007, 8, 9);
days[3] = new Date(2007, 11, 9);
days[4] = new Date(2006, 8, 9);
days[5] = new Date(2006, 8, 9);
days[6] = new Date(2005, 8, 9);
days[7] = new Date(2005, 9, 9);
days[8] = new Date(2005, 8, 9);
days[9] = new Date(2009, 9, 9);
Date.buffSort(days);
for (int i = 0; i < days.length; i++)
{
System.out.println(days[i]);
}
}
}
// 比较日期大小
class Date
{
int year;
int month;
int day;
public Date(int y, int m, int d)
{
this.year = y;
this.month = m;
this.day = d;
}
public int compare(Date date)
{
/*
* 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
* 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
*/
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 static Date[] buffSort(Date[] dates)
{
Date temp;
for (int i = dates.length - 1; i > 0; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (dates[j].compare(dates[j + 1]) > 0)
{
temp = dates[j];
dates[j] = dates[j + 1];
dates[j + 1] = temp;
}
}
}
return dates;
}
// 重写toString方法
public String toString()
{
return year + "-" + month + "-" + day;
}
}
运行结果:
2005-8-9
2005-8-9
2005-9-9
2006-8-9
2006-8-9
2007-8-9
2007-11-9
2008-8-9
2008-8-20
2009-9-9
相关文章推荐
- 计数排序(线性复杂度的排序,且不需要进行大小比较)
- 对三维数组进行排序,x相等时比较y的大小,y相等时比较z的大小,用到qsort函数。
- 比较两个日期的大小 NSDate获取当前日期 进行比较
- [Linux] du-查看文件夹大小-并按大小进行排序
- 比较日期的大小的几种方法
- C#基础之数组排序,对象大小比较
- C#基础之数组排序,对象大小比较
- 【jQuery日期处理】两个时间大小的比较
- 字符串格式的日期比较大小
- SQL按日期Datatime来比较大小
- mysql 时间日期比较大小
- 集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。
- DateTime.Compare(t1,t2)比较两个日期大小
- Extjs中Ext.form.VTypes日期大小比较的实例
- (转) 用javascript 比较日期大小
- js中日期比较排序
- Java:日期字符串格式大小比较
- usort( )函数—使用用户自定义的比较函数对数组中的值进行排序
- 将SQL2005字符型字段转换成为日期时间型后比较大小的代码
- js实现比较日期大小