日期:2014-05-20  浏览次数:20777 次

双重循环 和 Arrays.sort()+Arrays.binarySearch() 哪种方式效率高?
两个数组:
String[]   A   ;
String[]   B   ;

两种循环方法:
1.
for   (int   i   =   0;   i   <   A.length;   i++)   {
        for   (int   j   =   0;   j   <   B.length;   j++)   {
                if   (A[i].equals(B[j]))   {
                        break;
                }
        }
}

2.
Arrays.sort(A);  
for   (int   k   =   0;   k   <   B.length;   k++)   {
        if   (Arrays.binarySearch(A,   B[k])   > =   0)   {
                break;
        }
}

哪种会更快一些呢?

------解决方案--------------------
测试 下就 知道 了
------解决方案--------------------
测试仪下看看,好像这东西要看你的具体情况的
------解决方案--------------------
从算法复杂度上看,他们是一样的;
从具体的个案来说,要看A和B的具体数据
------解决方案--------------------
第二种可能是O(N*(N+1)/2)+N*LOG(N)
可以知道 当数据越多 第2种将有一定优势
------解决方案--------------------
Arrays.sort()使用的是经过优化过的快速排序算法,数据量越大,其速度越快。在数据量达到万、十万级别时速度差是很明显的。