В день 0 я начал с простого алгоритма линейного поиска, который будет искать нужные данные в массиве.
На самом деле я рассмотрел три способа реализации алгоритма линейного поиска, два из них — итеративный, а один — рекурсивный.
Algorithm 0.1
Method linear_search(arr, n, data)
for(i in range in range of [0,n) )
if(arr[i] is equal to x)
return index i
else return -1 that means element not found.
Здесь в 0.1 нет необходимости перебирать весь массив, сразу возвращается индекс, по которому будут найдены данные, без перебора всего цикла.
Algorithm 0.2
Method sentinal_linear_search(arr, n, data)
save arr[n - 1] into last
store data into arr[n-1]
set i = 0
while arr[i] not equal to data
increment i
now restore arr[n-1] from last
if i<n-1 or arr[n-1] is equal to x
return i
else return -1 which means element not found.
sentinal — лучший алгоритм линейного поиска, потому что в нем выполняется только одна проверка только для проверки того, присутствуют ли искомые данные в массиве или нет, вместо двух повторных проверок в 0.1. Проверка индекса за пределами границы реализуется только один раз, что является основным преимуществом версии 0.2.
Algorithm 0.3 Method recursive_linear _search(arr, n, i, data) here i is the preesent index . base case : if i > n-1 return -1 (element not found) if arr[i] is equal to data return i else return recursive_linear_search(arr, n, i+1, data)
Теперь часть реализации:

Я скоро отредактирую сообщение и добавлю объяснение временной сложности для вышеизложенного. Спасибо !