public class Test {
public static void main(String[] args) {
Date date1= new Date(2010, 1, 2);
int day1 = date1.getDay();
Date date2= new Date(2011, 4, 20);
int day2 =date2.getDay();
Date date3 = new Date(2016, 4, 8);
int day3 = date3.getDay();
int[] days = {day1,day2,day3};
printArray(days);
sort(days);
System.out.print("排序后:");
printArray(days);
Date date = new Date(2017, 04, 20);
int index = binarySearch(days, date);
System.out.println("查找"+date.getDay()+"的位置为:"+index);
}
public static void printArray(int[] days) {
for (int i = 0; i < days.length; i++) {
System.out.print(days[i] +" ");
}
}
public static void sort(int[] array){ //用冒泡排序来排数组
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (array[j]>array[j+1]) {
int temp;
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static int binarySearch(int[] arr,Date date){ //折半查找
int len =arr.length;
int low=0,high=len-1,mid;
mid=(low+high)/2;
while (arr[mid]!=date.getDay()) {
if (arr[mid]>date.getDay()) {
high=mid-1;
}else if (arr[mid]<date.getDay()) {
low=mid + 1;
}
if (low>high) {
return -1;
}
mid = (low+high)/2;
}
return mid;
}
}
public class Date {
private int year;
private int month;
private int day;
public Date(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
}
//输出结果:
2 20 8 排序后:2 8 20 查找20的位置为:2
追问老师要求 年月日一起比较 然后再折半查找。。。