无意中遇到的问题,在实际运行中,同样升序排列的String和char[],分别使用String.indexOf()和Arrays.binarySearch(),前者比后者更快。我所知道的是,String底层是final char[],indexOf()是从头到尾遍历,时间复杂度为 O(n),而 Arrays.binarySearch() 是二分查找,时间复杂度为 O(logn),在有序的前提下,后者应该比前者快。然而两次提交的测试结果却是前者更快,因为差距不大,我重新进行了测试,当循环次数达到3*10^8时,String.indexOf()用时233ms,Arrays.binarySearch()用时1204ms。
Arrays.binarySearch()一般适合于数据量比较大的查找。indexOf是从0开始查找,数据量小的话,有可能更快。
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《二分查找真的那么快吗?》, 一起来围观吧 二分查找真的那么快吗?_梁海江的博客-CSDN博客 1. 背景今天刷博客,无意中看到一个题目,对于一个同样升序排列的字符串和字节数组,分别使用String.indexOf()和Arrays.binarySearch查询特定字符,前者竟然比后者快?对于一个升序的数组,二分查找可是最强的武器,怎么还被顺序查找的indexOf干掉了。带着这个好奇,我做了一个无聊的测试。2. 先上实例代码public class StringCharCompare { long count = 100000000; private String testStr https://blog.csdn.net/oYinHeZhiGuang/article/details/119813409?utm_source=app&app_version=4.13.0&code=app_1562916241&uLinkId=usr1mkqgl919blen