В современной жизни разработчика программного обеспечения JavaScript обязательна для всех. После появления различных фреймворков в JavaScript, таких как Node JS, Angular, React и т. д., он становится все более популярным среди разработчиков программного обеспечения. Но в настоящее время разработчики JavaScript хотят вернуться к основному программированию.
Итак, я начал серию основных программ javascript, в которой я рассмотрел все темы javascript для начинающих<. /em>, среднийи продвинутый.
Поиск очень важен в повседневной жизни программиста. Если ваш файл слишком велик и вы хотите найти определенное слово для поиска, вам нужна поисковая система.
Типы поиска в мире программирования:
Существует два типа поиска:
- Линейный поиск ( Последовательный поиск)
- Двоичный поиск ( Поиск с половинным интервалом)
Линейный поиск:
В программировании линейный поиск ( последовательный поиск ) — это метод поиска элемента в массиве или списке. . Он последовательно проверяет все элементы массива или списка на наличие целевого значения, пока не будет найдено совпадение или не будут найдены все элементы.
Разработка кода:
- На первом этапе мы создаем функцию, принимающую два параметра, а именно
arr
иnum
. - После этого мы выполняем
for loop
над массивом и сравниваем каждое значение массива со значениемnum
. - Если мы нашли искомый элемент, то он возвращает значение индекса искомого элемента, иначе возвращает
-1
Анализ производительности линейного поиска:
worst-case performance ---- O(n) best-case performance ---- O(1) average-case performance ---- O(n) worst-case space complexity ---- O(1)
Бинарный поиск:
Двоичный поиск также известен как Поиск с половинным интервалом. В алгоритме поиска этого типа мы просто выделяем массив из средней точки. Если средняя точка равна целевому значению, возвращается значение индекса элемента искомого элемента в массиве. Если среднее значение меньше целевого значения, то значение Left равно (mid+1), в противном случае Right равно (mid -1) и выполняется поиск во вложенных массивах. Этот поиск выполняется до тех пор, пока целевое значение не будет найдено или элемент недоступен в списке.
Алгоритм бинарного поиска:
Given an array of A and having n no. of sorted items like A[0] <= A[1] <= A[2] <= .... <= A[n-1] <= A[n] and T is the target value. The below algo find the index of target value in A array. 1. Set Left = 0 and Right = n-1 2. If Left > Right, Binary Search terminates as unsuccessful 3. Set m (middle element) to the floor of (Left + Right)/2 4. If A[m] > T, then set Right to m-1 and go to step 2. 5. If A[m] < T, then set Left to m+1 and go to step 2. 6. If A[m] = T, search is done, return the value of m.
Функциональное преобразование вышеуказанного алгоритма:
function binary_search ( A, n, T ) : L = 0 R = n - 1 while R > = L m = floor((L+R)/2) If A[m] > T R = m-1 Else if A[m] < T L = m+1 Else return m return unsuccessful
Фрагмент кода бинарного поиска:
Доработка приведенного выше фрагмента кода:
- На первом этапе мы создаем функцию с тремя параметрами, а именно:
arr arr.lengthnum
- После этого присваиваем значение
arr.length
переменнойn
- В следующей строке мы выполняем сортировку в заданном массиве
arr
.
var sortedArr = arr.sort(function (a, b) { return a-b; });
4. После этого назначьте 0
налево и n-1
на право.
5. Теперь мы просто помещаем while loop
withleft <=right
в цикл while, даем минимальное значение суммы левого и правого значений, а затем делим на 2 среднюю переменную(var mid = Math.floor((left+right)/2)
) и мы можем проверить три условия:
1. If the value of sortedArr[m] === num, then return the value of mid. if(sortedArr[mid] === num) { return mid } 2.If sortedArr[mid] > num, then right is mid -1 if (sortedArr[mid] > num) { right = mid - 1; } 3. If sortedArr[mid] < num, then left is mid + 1 else { left = mid + 1; }
6. Если left >right
, то элемент для поиска отсутствует в списке или массиве.
Бинарный поиск рекурсивным методом:
Основное отличие простой функции бинарного поиска от рекурсивного метода заключается в том, что мы вызываем binary_search_recursive функцию в каждом условии if else .
1. If the value of sortedArr[m] === num, then return the value of mid. if(sortedArr[mid] === num) { return mid } 2.If sortedArr[mid] > num, then right is mid -1 if (sortedArr[mid] > num) { right = mid - 1; return binary_search_recursive(arr, left, right, num); } 3. If sortedArr[mid] < num, then left is mid + 1 else { left = mid + 1; return binary_search_recursive(arr, left, right, num); }
Анализ производительности бинарного поиска:
worst-case performance ---- O(log n) best-case performance ---- O(1) average-case performance ---- O(log n) worst-case space complexity ---- O(1)
Вывод :
В этой статье рассматривается концепция линейного поиска и бинарного поиска в javascript. Если у вас есть какие-либо сомнения и вы хотите получить от меня какую-либо помощь, напишите мне по адресу [email protected]. В следующем разделе мы рассмотрим методы сортировки в Javascript.
Методы сортировки в JavaScript