双重循环 和 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()使用的是经过优化过的快速排序算法,数据量越大,其速度越快。在数据量达到万、十万级别时速度差是很明显的。