class YYYYY {
public static void main(String[] args) {
date date[] = new date[5];
date[0] = new date(2006, 8, 6);
date[1] = new date(2007, 4, 6);
date[2] = new date(2008, 4, 9);
date[3] = new date(2004, 4, 6);
date[4] = new date(2009, 4, 5);
date d = new date(2006, 8, 6);
date = YYYYY.maopao(date);
for (int i = 0; i < date.length; i++) {
System.out.println(date[i]);
}
int binarySearch = YYYYY.binarySearch(date, d);
System.out.println(binarySearch);
}
public static date[] maopao(date[] date) {
for (int i = 0; i < date.length - 1; i++) {
for (int j = 0; j < date.length - i - 1; j++) {
if (date[j].compareTo(date[j + 1]) > 0) {
date temp = date[j];
date[j] = date[j + 1];
date[j + 1] = temp;
}
}
}
return date;
}
public static int binarySearch(date[] date, date d) {
if (date.length == 0) {
return -1;
}
int befor = 0;
int end = date.length - 1;
int mid = (befor + end) / 2;
while (befor <= end) {
if (d.compareTo(date[mid]) == 0) {
return mid;
}
if (d.compareTo(date[mid]) > 0) {
befor = mid + 1;
}
if (d.compareTo(date[mid]) < 0) {
end = mid - 1;
}
mid = (befor + end) / 2;
}
return -1;
}
}
class date implements Comparable<date> {
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;
}
@Override
public int compareTo(date o) {
return year > o.year ? 1
: year < o.year ? -1
: month > o.month ? 1
: month < o.month ? -1
: day > o.day ? 1
: day < o.day ? -1
: 0;
}
@Override
public String toString() {
return "date [year=" + year + ", month=" + month + ", day=" + day + "]";
}
}