冒泡法,顾名思义,将元素值最小的浮上来,将元素值最重的沉下去。
一个练习:用冒泡法实现日期的排序。
几个关键点:
1.java中如何返回一个数组的引用
2.冒泡法的程序实现
实现
1.新建一个date类,包含构造方法,引用类型的比较.
class Date {
int year,month,day;/*定义成员变量*/
Date (int y,int m,int d){
year = y;
month = m;
day = d;
}/*定义构造方法*/
public static int compare (Date date){
return y > date.year ? 1
: y < date.year ? -1
: m > date.month ? 1
: m < date.month ? -1
: d > date.day ? 1
: d < date.day ? -1
: 0;
}/*定义比较年月日的比较函数,年月日均大于入参时,返回正1,小于返回-1;等于返回0;*/
public toString (){
return "year-month-day: " + year + " - " + month + " - " + day;
}
}
2.冒泡法
public static Date[] bubblesort (Date[] a) {
int len = a.length;
//i从后往前遍历
for (int i = len -1; i > 0; i--){
//j从前往后遍历
for (int j = 0 ; j <= i-1 ; j++) {
if (a[j].compare(a[j+1])>0) {
//这里调用compare函数,如果前面的日期大于后面的日期,则进行交换;
Date tmp = a[j];
a [j] = a[j+1];
a[j+1] = tmp;
}
}
return a;
}