A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于陈 中级黑马   /  2012-5-11 12:27  /  1755 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /**
  2. * 作者:于陈
  3. * 功能:演示各种排序
  4. * 时间:2012年5月5日 19:49:34
  5. */
  6. package com.paixu;

  7. import java.util.*;

  8. public class Demo1 {

  9.         public static void main(String[] args) {
  10.                 int len = 50;
  11.                 int arr[] = new int[len];

  12.                 for (int i = 0; i < len; i++) {
  13.                         int t = (int) (Math.random() * 10000);
  14.                         arr[i] = t;
  15.                 }
  16.                 Boo boo = new Boo();
  17.                 Calendar car = Calendar.getInstance();
  18.                 System.out.println("排序前时间:" + car.getTime());
  19.                 boo.maopaoPaixu(arr);
  20.                 car = Calendar.getInstance();
  21.                 System.out.println("排序后时间:" + car.getTime());
  22.                 System.out.println();
  23.                 car = Calendar.getInstance();
  24.                 System.out.println("排序前时间:" + car.getTime());
  25.                 Selent selent = new Selent();
  26.                 selent.selentPaixu(arr);
  27.                 car = Calendar.getInstance();
  28.                 System.out.println("排序后时间:" + car.getTime());
  29.         }

  30. }

  31. // 选择排序
  32. class Selent {
  33.         public void selentPaixu(int arr[]) {
  34.                 int temp = 0;
  35.                 for (int i = 0; i < arr.length - 1; i++) {
  36.                         int min = arr[i];
  37.                         int minIndex = i;
  38.                         for (int j = i + 1; j < arr.length; j++) {
  39.                                 if (min > arr[j]) {
  40.                                         min = arr[j];
  41.                                         minIndex = j;
  42.                                 }
  43.                         }
  44.                         temp = arr[i];
  45.                         arr[i] = arr[minIndex];
  46.                         arr[minIndex] = temp;
  47.                 }

  48.         }
  49. }

  50. // 冒泡排序
  51. class Boo {
  52.         public void maopaoPaixu(int[] arr) {
  53.                 int temp = 0;
  54.                 for (int i = 0; i < arr.length - 1; i++) {
  55.                         for (int j = 0; j < arr.length - 1 - i; j++) {
  56.                                 if (arr[j] > arr[j + 1]) {
  57.                                         temp = arr[j];
  58.                                         arr[j] = arr[j + 1];
  59.                                         arr[j + 1] = temp;
  60.                                 }
  61.                         }
  62.                 }

  63.         }
  64. }
复制代码
我想简单的测试下各种排序算法的时间复杂度,但是用这个Calendar只能弄出精确到秒的系统时间,虽然也能实现功能,但是貌似不太方便,请问有没有能精确到毫秒的时间方法?怎么用的?

5 个回复

倒序浏览
咦,你看一下System类下面的这个方法。
static long currentTimeMillis()
          返回以毫秒为单位的当前时间。
这个就是一毫秒为单位的了
回复 使用道具 举报
可以用System类中currentTimeMillis()方法来实现,该方法返回的是以毫秒为单位的当前时间long类型的数据,但是有个问题要注意下:时间的精确度取决于底层的操作系统,看操作系统以多少值作为单位来测量时间。使用如下 :
long startTime = System.currentTimeMillis();
System.out.println("排序前时间:" + startTime);
                boo.maopaoPaixu(arr);              
long endTime = System.currentTimeMillis();
                System.out.println("排序后时间:" + endTime);
                System.out.println("一共用了" + (endTime-startTime) + "毫秒");
这样就可以一目了然了。
回复 使用道具 举报
java 1.5版本开始支持更小的时间单位,可以到纳秒,网上搜索了下资料,
果然发现了更精确的时间单位:纳秒
于是可以这样计算耗费时间了:
long start = System.nanoTime();  
{
//这里是你要测的代码块...

}
long end = System.nanoTime();  
long time = end - start;//算出时间结果
回复 使用道具 举报
你想精确到毫秒的话,就请看如下代码:
long start = System.currentTimeMillis();  
{

//这里是你要测的代码块

}
long end = System.currentTimeMillis();  
long time = end - start;//算出时间结果
回复 使用道具 举报
一般在实际应用中经常使用System.currentTimeMillis() 来记录某段代码的运行时间。
public static long nanoTime()返回最准确的可用系统计时器的当前值,以毫微秒为单位。
JDK API中的例子:
   long startTime = System.nanoTime();
   // ... the code being measured ...
   long estimatedTime = System.nanoTime() - startTime;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马