利用冒泡排序的思想对符合格式的时间字符串进行排序

今天在写JSP的时候想对数据库的数据按照时间的顺序进行排序,当然在数据库里面会很方便的的用SQL语句进行排序 比如MYSQL中 你可以使用"Select *from 表名 order by uploadtime desc"这条语句 将数据库中所有的数据按照上传文件的时间进行降序排列。

后来突发奇想 如果纯粹使用java语言的话 该如何实现这个功能?仔细想了一下大概的思路,然后在myeclipse里面将自己的想法实现了以下,现在记录一下

总结一下:整个程序大概的思想就是 使用冒泡排序的思想进行排序,这里再一次证明了基础是多么的重要,很多同学都抱怨为什么SSH三大框架学起来这么费劲,其实这些框架,不对几乎所有的框架都是对基础的功能进行封装,达到方便使用的目的,如果你连基础都不牢固 当然学起来费劲,如果你对基础学得好,这些所谓的框架都是一些纸老虎罢了,

这里扯远了....

好了继续上面的话题,整个程序主要就是使用了冒泡排序的思想,看了一下其中涉及到的java基础知识真心不少,在脑子构思的时候觉得挺简单的,但是真正写起来的时候发现很多地方都犯了小错误,花了点时间才最终搞定。尴尬


涉及的知识点: ------ 冒泡排序法

------ 二维数组的基础知识

------ 函数的引用传递跟值传递(写的时候就忽略这个问题  )



真的都是非常基础的东西,好了废话不多了,上代码吧 关键的地方都做了注释了

说明: 1.关于解析字符串的格式问题,推荐使用 hh:mm:ss的格式,为什么? 因为简单易懂啊大笑,当然你也可以使用其他的格式进行解析 但是要注意分隔符最好不要用特殊字符,很多同学用特殊字符容易出错,这里归根结底还是因为 split这个函数,虽然强大但是问题也多,容易出问题

2. 可以用SimpleDateFormat讲任意的字符串进行处理 转换成你想要的格式,如上面hh:mm:ss的格式

3. swap函数一定要注意值传递还是引用传递的问题,注意值传递还是引用传递的问题 ,注意值传递还是引用传递的问题 这个很多新手都不会注意,然后检查了半天找不到错误,重要的事情说三遍!!!!!!!!!!!!!!


该说的基本上都说了,有兴趣的同学可以试试,源码已经运行通过,

程序还可以优化,但是因为时间问题就这样吧 有问题的同学可以留学 我会及时回复


package com.orsay.test;

import java.text.SimpleDateFormat;

public class Demo1 {
	/*
	 * 解析字符串成整型数组
	 */
	public static int[] inverter(String[] str) {
		int[] time = new int[str.length];

		for (int i = 0; i < str.length; i++) {
			time[i] = Integer.valueOf(str[i]);
		}
		return time;

	}

	/*
	 * 封装但一定格式打印二维数组的函数
	 */

	public static void sys(int[][] arr) {

		for (int i = 0; i < arr.length; i++) {
			int[] num = arr[i];
			for (int j = 0; j < num.length; j++) {
				System.out.print(num[j] + "\t");

			}
			System.out.println();
		}
	}

	// swap函数,交换顺序,这里注意值传递跟引用传递的区别
	public static void swap(int[][] ar0, int ar1, int ar2) {

		int[] temp = ar0[ar2];
		ar0[ar2] = ar0[ar1];
		ar0[ar1] = temp;

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 时间字符串解析成整形数组
		int[] t1 = inverter(new String("18:00:40").split(":"));
		int[] t2 = inverter(new String("10:00:40").split(":"));
		int[] t3 = inverter(new String("19:20:50").split(":"));
		int[] t4 = inverter(new String("10:50:00").split(":"));
		int[] t5 = inverter(new String("19:05:00").split(":"));
		// 讲解析后的字符串放入二维数组中
		int[][] Time = { t1, t2, t3, t4, t5 };
		sys(Time);
		System.out.println("-------------排序中--------------");

		// 冒泡排序的思想实现对二维时间数组进行排序
		for (int i = 0; i < Time.length; i++) {
			for (int j = i + 1; j < Time.length; j++) {
				if (Time[i][0] > Time[j][0]) {
					swap(Time, i, j);
				} else if (Time[i][0] == Time[j][0]) {
					if (Time[i][1] > Time[j][1]) {
						swap(Time, i, j);
					} else if (Time[i][1] == Time[j][1]) {
						if (Time[i][2] > Time[j][2]) {
							swap(Time, i, j);
						}
					}
				}
			}
		}

		System.out.println("-------------排序后--------------");
		sys(Time);

	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值