前言

我们都知道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;
}
}

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

Java-BubbleSort的更多相关文章

  1. 9天快速入门java

    Java入门教程[9天快速入门JAVA] §1.3.简单的Java程序 下面我们先介绍两个简单的Java程序,并对其进行分析. 例1.1. public class HelloWorldApp{//a ...

  2. 搞定C系语言的的swap

    http://www.cs.utsa.edu/~wagner/CS2213/swap/swap.html 原地址 Parameters, by value and by reference: Both ...

  3. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  4. Java基础知识强化52:经典排序之冒泡排序(BubbleSort)

    1. 冒泡排序的原理图: 2. 冒泡排序代码实现: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 ...

  5. java文档注释--javadoc的用法

    1.前言 Java中有三种注释方式.前两种分别是 // 和 /* */,主要用于代码的注释,以此来方便代码的可读性.第三种被称作说明注释或文档注释,它以 /** 开始,以 */结束,文档注释允许你在程 ...

  6. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  7. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  8. 几大排序算法的Java实现

    很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...

  9. 8个排序算法——java

    public static void radixsort(int[] a){ int max=a[0]; for(int i=1;i<a.length;i++){ if (max<a[i] ...

  10. java排序学习笔记

    前面写了js的排序实现,总得玩玩java的哈. 同样,冒泡.选择.快速(这三个之前实现过也写过文章).堆排序,然后做比较. 主要遇到的难点: - -||想轻松点写个封装计时的逻辑,不想每调用一个排序就 ...

随机推荐

  1. POJ2831(次小生成树问题)

    Can We Build This One? Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1475   Accepted: ...

  2. 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)

    一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...

  3. Thread之三:Thread Join()的用法

    一.join用法 join()和wait()不会释放锁,join()是Thread的方法,wait()是Object的方法 1.join方法定义在Thread类中,则调用者必须是一个线程 例如: Th ...

  4. 自定义数据校验(4)---demo3---bai

    工具类:CharUtil package com.etc.util; import java.util.regex.Pattern; public class CharUtil { public st ...

  5. SqlServer——游标

    参考:http://www.cnblogs.com/94cool/archive/2010/04/20/1715951.html  http://www.cnblogs.com/moss_tan_ju ...

  6. No result defined for action action.LoginAction and result success 问题解决

    转自:https://blog.csdn.net/dongzhout/article/details/43699699 搭建好SSH2框架,写一个简单的登陆功能,提交表单的时候遇到这个问题: 配置文件 ...

  7. Struts2 结合 Freemarker 实例

     Freemarker 是一个不依赖 web 容器的模板引擎,一个基于模板生成文本输出的工具.其工作的原理如下图: freemarker 不是一个 web 应用的框架,而适合作为 web 应用的一个组 ...

  8. [转]MySQL5.6.22 安装

    原文路径 http://jifeng3321.iteye.com/blog/2181517?utm_source=tuicool   由于一直做银行项目,所以一直在用oracle和db2,但最近自己想 ...

  9. linux中怎么结果一页一页输出

    比如sudo apt-cache search php 结果可能有两个屏幕,但是命令执行完毕之后直接就跳到最后面了,我想看第一行怎么办? 可以用管道命令(|)把一个命令的结果作为另一个命令的参数即可. ...

  10. Linux minicom命令

    一.简介 minicom是Linux下的超级终端,与Windows下的超级终端功能相似,可以通过串口控制外部的硬件设备,可以用于管理和控制嵌入式设备 二.安装 1)yum安装 yum install ...