前言

我们都知道BubbleSort这种排序算法不管从大到小排序,还是从小到大排序,都是相邻的两个进行比较,然后不符合条件时交换顺序。下面来看看引用类型是怎么进行BubbleSort的。

内容

  • 需求:对下面几个日期进行BubbleSort排序;
  • 用到的知识:数组为引用类型、排序过程中用到Compare()方法、重写了toString()方法;

内存分析

Demo

/*
作者:周丽同
说明:对引用类型(Date)进行BubbleSort
*/
public class TestDateSort{
public static void main(String[] args){
Date[] days = new Date[5];//定义一个日期数组
day[0] = new Date(2006,5,4);
day[1] = new Date(2006,7,4);
day[2] = new Date(2008,5,4);
day[3] = new Date(2004,5,9);
day[4] = new Date(2004,5,4); bubbleSort(days); //循环输出排序结果;
for(int i=0; i<days.length; i++){
System.out.printIn(days[i]);
}
} //定义一个返回值为引用类型(数组)的bubbleSort方法;
public static Date[] bubbleSort(Date[] a){
int len = a.length;
for(int i =len-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;
}
} class Date{
int year,month,day; //Date构造方法
Date(int y,int m,int d){
year = y;
month = m;
day = d;
} //定义了一个比较算法(采用递归方式);
public int compare(Date date){
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;
} //重写了toString方法
public String toString(){
return "Year:Month:Day --" + year + "-" + month + "-" + day;
}
}

感谢您的宝贵时间······

最新文章

  1. 浅谈 linux 例行性工作 crontab (linux定时任务)
  2. Graded Browser Support
  3. OpenCascade BRep Format Description (2)
  4. js-FCC算法-Symmetric Difference
  5. bzoj1222: [HNOI2001]产品加工--DP
  6. nyoj 19擅长排列的小明 (DFS)
  7. Ado.Net小练习03(省市联动)
  8. [Unity菜鸟] 摄像机视角控制
  9. SQLServe错误整理
  10. 引用:初探Sql Server 执行计划及Sql查询优化
  11. java可用与串口通信的一些库
  12. Visual Studio2012 添加服务引用时,生成基于任务操作不可用原因
  13. Java高级特性 第7节 多线程
  14. servlet篇 之 servlet概念及其功能实现
  15. FCKEditor在IE10下的不兼容问题解决方法
  16. [前端] html+css+javascript 实现选项卡切换效果
  17. [0day]微软XP系统右键菜单任意DLL却持
  18. MapReduce:Shuffle过程详解
  19. Task 6.2站立会议二
  20. 103-advanced-上下文

热门文章

  1. java代码异常捕获throws抛出异常
  2. Flash 零日漏洞复现(CVE-2018-4878)
  3. apache将不带www域名301重定向到带www的域名的配置方法
  4. 【新手向】Centos系统文件权限的系统阐述与演示
  5. javascript——屏蔽右键快捷菜单
  6. leetcode637
  7. Javascript 面向对象(一):封装
  8. 探究QA职能
  9. sed对指定行添加或删除注释
  10. 使用Aspectj 的配置文件方式进行aop操作