Рубрики
Алгоритмы Массивы "поиск"

Массивы «линейный поиск»

последовательно сравниваем с тем элементом, который ищем

массив из n элементов
O(n)
n — количество итераций в массиве

для массива из 1000 элементов
O(1000)

лучший случай
элемент находим в начале списка за одну операцию

худший случай
элемент находим в конце списка

сложность
нам необходимо пройтись по каждому элементу, который в этом списке находится

const arr=[1,4,5,8,51,2,7,5,5,2,11]
let cnt = 0;//количество итераций
function linearSearch(arr, item){
 for (let i =0; i< arr.length; i++){
  cnt+=1;
  if (arr[i] === item) {
   return i;
  }
 }
 return null;
}
console.log(linearSearch(arr, 11));
console.log('count = ', count);
Рубрики
Алгоритмы

О(n)

«О большое»

сложность алгоритма, или же его скорость алгоритмов описывается с помощью специальной аннотации

(n) в скобках

указывается количество операций, за которое этот алгоритм приходит к финальному результату

указывается всегда наихудшая ситуация

типы графиков

по скорости выполнения
от лучшего до наихудшего

t=1
t=log2n
t=n
t=n*log2n
t=n*n
t=n!

Например

Поиск элемента в массиве (линейный)

для массива из 1000 элементов
O(1000)

массив из n элементов
O(n)

Рубрики
Алгоритмы

Алгоритм «понятие»

алгоритм — это набор последовательных действий

  1. решают задачу
    любой фрагмент кода — это алгоритм
  2. оценка сложности
    некоторые алгоритмы могут быть эффективнее других
    эффективность не всегда равна скорости работы алгоритма
    в некоторых ситуациях более медленный алгоритм может оказаться на определённой выборке данных более эффективным
Рубрики
ООП

Парадигма ООП «понятие»

Был придуман объектно-ориентированный подход, который воспринимался сообществом программистов, как нечто грандиозное, способное решить все проблемы

КЛАСС — ОБЪЕКТ

Рассмотрим два основных понятия
объектно-ориентированных парадигмы

Есть человек
Человека можно охарактеризовать следующими свойствами

  • Имя
  • Фамилия
  • Возраст
  • Вес
  • Рост

Это некоторый список характеристик, с помощью которого можно охарактеризовать любого человека. При этом в контексте ООП подобная характеристика называется КЛАССОМ. (Класс Человек, Класс Human, Класс Person)

ОБЪЕКТ

Конкретный представитель КЛАССАЭКЗЕМПЛЯР называется ОБЪЕКТОМ. В данном примере — это Вася Пупкин, которому 27 лет

КЛАСС

Класс — это некоторое описание характеристик, а Объект — это конкретный экземпляр, у которого каждая характеристика имеет какое-то значение (Например Имя=Вася)

СВОЙСТВА

В контексте ООП эти характеристики (Имя, Фамилия и т.д.) называются СВОЙСТВАМИ.

МЕТОДЫ

А действия, которые может совершать тот или иной объект называются МЕТОДАМИ (Например Ходить, Рисовать, Говорить и т.д.)

КОНСТРУКТОР

У любого класса есть конструктор — это специальный метод, некоторый блок инструкций, который вызывается при создании объекта. Он также может принимать в себя некоторые аргументы. Обычно в конструкторе свойством объекта присваиваются какие-то значения. С помощью оператора new мы можем создать объект (отдельный экземпляр какого-либо класса).

Особенности Класса

У созданного объекта мы можем вызвать соответствующий метод, который нам вернёт значение (результат). При этом из любого класса мы можем создать столько объектов, сколько нам потребуется.

Каждый класс может включать в себя столько свойств и методов — сколько потребуется, но хорошей практикой является делать классы под конкретные ЗАДАЧИ.

Рубрики
Парадигма "процедурная"

Парадигма процедурная «понятие»

программа, написанная в процедурном стиле

  • ожидает на вход какие-то данные
  • выполняет каких-то ряд процедур (функции)
  • последним возвращает какой-то результат (результат вычислений)

Изначально все программы писались с процедурным подходом, но когда программы стали большими (много строк, много кода) стало понятно, что такой подход не подходит.

Сложно конфигурировать приложение, сложно управлять какими-то сущностями, сложно делать декомпозицию.

И когда процедурного программирования стало не достаточно был придуман объектно-ориентированный подход.