1. 程式人生 > >如何高效地判斷數組中是否包含某特定值

如何高效地判斷數組中是否包含某特定值

算法 for 循環 false set ear 搜索算法 lis 復雜度

如何檢查一個未排序的數組中是否包含某個特定的值,這是在Java中非常實用並且頻繁使用的操作。另外,檢查數組中是否包含特定值可以用多種不同的方式實現,但是時間復雜度差別很大。下面,我將為大家展示各種方法及其需要花費的時間。

1.檢查數組中是否包含特定值的四種不同方法

  1. 使用List:
    1 public static boolean useList(String[] arr,String targetValue){
    2        return Array.asList(arr).contains(targetValue);      
    3 }

  2. 使用set
    1 public static
    boolean useSet(String[] arr, String targetValue) { 2 Set<String> set = new HashSet<String>(Arrays.asList(arr)); 3 return set.contains(targetValue); 4 }

  3. 使用一個簡單循環
    public static boolean useLoop(String[] arr,String targetValue){
            for(String s:arr){
                if(s.equals(targetValue)){
                    
    return true; } }return false; }

  4. 使用Arrays.binarSearch()
    public static int binarySearch(int[] a, int key)
    使用二進制搜索算法來搜索指定的 int 型數組,以獲得指定的值。必須在進行此調用之前對數組進行排序(通過上面的 sort 方法)。如果沒有對數組進行排序,則結果是不明確的。如果數組包含多個帶有指定值的元素,則無法保證找到的是哪一個。即使用Arrays.sort(a) 進行排序
    1     public static boolean
    useArraysBinarySearch(String[] arr,String target){ 2 Arrays.sort(arr); 3 int a = Arrays.binarySearch(arr, target); 4 if(a >= 0){ 5 return true; 6 }else { 7 return false; 8 } 9 }

    時間復雜度

如何高效地判斷數組中是否包含某特定值