Претърсване чрез обхождане

Time complexity:

Обхожда се целия масив и се търси елемента.

bool search_all(const int *arr, unsigned n, int x) {  
    bool isFound = false;  
    for (int i = 0; i < n; ++i) {  
        if (x == arr[i]) {  
            isFound = true;  
        }  
    }  
    return isFound;  
}

“Докато намериш с ‘котва’”

Търси се, докато елемента не се намери, като преди това търсения елемент се добавя в края на масива.

bool search_until(int *arr, unsigned n, int x) {  
    arr[n] = x;  
  
    int i = 0;  
  
	while (arr[i] != x) {
	    i++;  
	}  
  
    return i < n;  
}

Дихотомично търсене

binary search

bool binary_search(const int *arr, unsigned n, int x) {  
    int l = 0;  
    int r = n - 1;  
  
    while (r >= l) {  
        unsigned m = l + (r - l) / 2;  
  
        if (arr[m] == x) {  
            return true;  
        } else {  
            if (arr[m] < x) {  
                l = m + 1;  
            } else {  
                r = m - 1;  
            }  
        }  
    }  
  
    return false;  
}