一、有四種方式查詢陣列中是否包含某個值
1、使用list
public static boolean uselist(string arr, string targetvalue)
2、使用set
public static boolean useset(string arr, string targetvalue)
3、使用簡單的迴圈
public static boolean useloop(string arr, string targetvalue)return false;
}
4、使用arrays.binarysearch(),但這個方法只接受已經排好序的陣列
public static boolean usearraysbinarysearch(string arr, string targetvalue)
二、計算以上四種方式的時間複雜度
1、測試陣列的元素個數分別為:5 , 1000, 10000
public static void main(string args) ;//use list
long starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
long endtime = system.nanotime();
long duration = endtime - starttime;
system.out.println("uselist: " + duration / 1000000);
//use set
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("useset: " + duration / 1000000);
//use loop
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("useloop: " + duration / 1000000);
//use arrays.binarysearch()
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("usearraybinary: " + duration / 1000000);
}
result:
uselist: 13useset: 72
useloop: 5
usearraysbinarysearch: 9
use a larger array(1k):
string arr = new string[1000];random s = new random();
for(int i=0; i< 1000; i++)
result:
uselist: 112useset: 2055
useloop: 99
usearraybinary: 12
use a larger array(1k):
string arr = new string[10000];random s = new random();
for(int i=0; i< 10000; i++)
result:
uselist: 1590useset: 23819
useloop: 1526
usearraybinary: 12
三、總結
從以上結果可以清晰的看出,使用簡單的迴圈比使用集合更高效,很多開發者更多的使用第一種方式,但是第一種方式並不是最高效的,因為使用集合的時候,需要從陣列無序的讀取元素,再儲存到結合中,這個過程非常耗時;
實際上,乙個排序好的list或者tree時間複雜度僅為:o(log(n)),而hashset的效率更高:o(1)
java中如何高效判斷陣列中是否包含某個特定的值
public static boolean uselist string arr,string targetvalue public static boolean useset string arr,string targetvalue public static boolean useloop s...
如何高效檢查乙個陣列中是否包含某個值
1.檢查陣列中是否包含特定值的四種不同方法 1 使用list public static boolean uselist string arr,string targetvalue 2 使用set public static boolean useset string arr,string targ...
PHP如何查詢一列有序陣列是否包含某值(二分查詢)
問題 對於一列有序陣列,如何判斷給出的乙個值,該值是否存在於陣列。思路 判斷是否存在,最簡單是,直接迴圈該陣列,對每乙個值進行比較。但是對於有序陣列來說,這樣寫就完全沒有利用好 有序 這一特點。所有我們使用到 二分法查詢 有序陣列為 arr array 2,5,66,87,954,1452,5865...