利用冒泡排序的思想对符合格式的时间字符串进行排序
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); } }
相关文章推荐
- JAVA虚拟机-JMM内存模型(六)
- Java常见异常总结
- Linux目录结构和常用命令
- 欢迎使用CSDN-markdown编辑器
- 那些C++牛人的博客
- API集合框架-Set集合之HashSet
- 特殊字符\u2028导致的Javascript脚本异常
- 泪儿嗒
- 被事务代理的spring service 使用注解方式发布Dubbo服务
- Java I/O 模型的演进
- Android 百度地图API 定位 导航
- 陪伴
- strcpy的使用以及注意事项
- ccf题解
- 素数对猜想
- 初识安卓-打招呼
- 分布式存储
- oracle ocp 学习day3总结(sql基础)
- 开放封闭原则在OC中的实现办法
- Struts2入门了解1