2012年2月3日星期五

Java中查找数组中的某个元素

假设你有一个很大的数组,现在你想知道一个元素是不是在这个数组中,你会如何做呢?一种方法是使用for循环,一个一个从数组中找,这是最直接也是最笨的方法。因为你不可避免地要一个一个去数那些无用的元素。比较好一点的方法是使用Arrays类的binarySearch方法。废话不说,直接上代码。
import java.util.*;
class Test{
    public static void main(String[] args){
        int[] a = new int[10000000];
        for(int j=0;j<10000000;j++){
           a[j]=j;
       }
    
      long start = Calendar.getInstance().getTimeInMillis();
     for (int j =0; j<10000000; j++){
         if (a[j] == a.length-1) 
       break;
     }
     long end = Calendar.getInstance().getTimeInMillis();
     System.out.println(end-start);
     long start1 = Calendar.getInstance().getTimeInMillis();
    
    int t =Arrays.binarySearch(a,0,a.length,a.length-1);
    long end1 = Calendar.getInstance().getTimeInMillis();
    System.out.println(end1-start1);
    
   }
}
在我的机器上顺序查找消耗的时间是18ms,binarySearch的时间是0。不难看出,顺序查找的平均消耗时间要远远高于binarySeach;同时顺序查找的时间很不稳定,如果查找对象集中在数组的后部,那么消耗的时间还要远远高于平均时间。

2012年1月6日星期五

推广一下华为的Dbank

还是有一些有用的资源的,可以用rss订阅。http://bbs.dbank.com/?fromuid=706679

2011年12月14日星期三

Doudou linux中国大陆镜像

Doudou linux中国大陆镜像落户北京交通大学。请访问http://mirror.bjtu.edu.cn/doudoulinux/livecd/current/获得cd镜像。非常感谢BJTU以及管理员ideal同学!

2011年12月7日星期三

捐款

给维基百科捐款50人民币(现在支持人民币捐款哦),希望Wikipedia好好发展下去。

2011年8月10日星期三

除除草

好久没更新了,过来除草清扫一下。

2010年4月23日星期五

消息两则之二

2010年4月14日7时49分,青海省玉树藏族自治州玉树县发生7.1级地震,房屋大量倒塌,路毁桥断,山体滑坡,给当地人民群众生命财产造成严重损失,截至4月20日下午17时,地震已造成2064人遇难,失踪175人,受伤12135人,其中重伤1434人。举国上下为之震动,灾情牵动着全国人民的心!

“一方有难、八方支援”,为尽快帮助灾区人民渡过难关,学院研究生工作办公室发起“心系玉树,大爱无疆”的 募捐活动 ,号召全院研究生向玉树灾区受灾同胞伸出援助之手,奉献爱心,捐赠善款,支持灾区群众重建家园,以实际行动为灾区夺取抗震救灾胜利做出贡献,帮助灾区人民抗震救灾。

消息两则之一

一则来自小空
首先感谢大家这么捧我的场。

今天,我看到的如下的留言。

“苍井空,请把你的PayPal账户告诉我。其实不是我要看免费盗版,而是买不到正版。我决定把钱汇到到你的账户里。”

“如果苍井空告诉我们你的PayPal账户,我们决定支付正版的费用。千万不要小瞧中国苍井迷的诚意啊。”

这让我多少有点担心。由于推特有字数限制,不能清楚地表达,我决定在这写。希望看到的网友能够向其他网友们转达。

大家希望买正版的心情我理解,我非常的高兴。其实对盗版我也非常的痛心。但是,由于各种各样的原因买不到正版,我们无法改变,只好接受这个事实。

如果有什么行动我一定会发出正式通知,在这之前千万不要给任何不知道的账户转账付款。这世上总是有些利用别人的善意做坏事的人。是不是我自己有点杞人忧天了?我相信那些最初决定买正版的网友们的诚意。但是我觉得我有义务提醒大家。我觉得这是我力所能及,而且是我应该做的。