您的位置:首页 > 其它

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

2016-04-03 15:52 369 查看
今天在写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);

}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: