Инструменты пользователя

Инструменты сайта


basics_of_algorithms:algorithmic_complexity

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
basics_of_algorithms:algorithmic_complexity [2023/10/20 16:19]
werwolf
basics_of_algorithms:algorithmic_complexity [2023/10/20 16:33] (текущий)
werwolf [Выводы]
Строка 1184: Строка 1184:
   - При общих равных условиях программисты выбирают самые быстрые и самые экономичные алгоритмы   - При общих равных условиях программисты выбирают самые быстрые и самые экономичные алгоритмы
   - Выбрать самый быстрый алгоритм оказывается не так просто. Измерения на конкретных данных не позволяют прогнозировать время и память алгоритмов на других данных   - Выбрать самый быстрый алгоритм оказывается не так просто. Измерения на конкретных данных не позволяют прогнозировать время и память алгоритмов на других данных
 +  - Программисты используют нотацию О-большое,​ чтобы оценить производительность алгоритмов в целом
 +  - Чаще всего встречаются такие сложности,​ как константная,​ логарифмическая,​ линейная,​ линейно-логарифмическая,​ квадратическая,​ экспоненциальная и факториальная. В этом списке они распределены в порядке от самой быстрой к самой медленной
 +  - Нотация О-большое оценивает не только скорость алгоритма,​ но и память,​ которую он использует
 +===== Примеры ===== 
 +Реализуйте функцию,​ которая проверяет являться ли число простым или нет.
 +
 +Оптимизируйте алгоритм так, чтобы он выполнялся за наименьшее количество итераций
 +
 +**solutions/​solution.js**
 +Реализуйте и экспортируйте функцию по умолчанию
 +<code javascript>​
 +import isPrime from '​./​solution.js';​
 +
 +isPrime(2147483648) // false
 +isPrime(87178291199) // true
 +</​code>​
 +
 +**Решение:​**
 +<code javascript>​
 +const isPrime = (number) => {
 +  if (number < 2) {
 +    return false;
 +  }
 +
 +  const sqrt = Math.sqrt(number);​
 +  for (let i = 2; i <= sqrt; i += 1) {
 +    if (number % i === 0) {
 +      return false;
 +    }
 +  }
 +
 +  return true;
 +};
 +
 +export default isPrime;
 +</​code>​
 +
 +
 +<​details>​
 +<​summary>​**solutions/​solution.php**</​summary>​
 +Реализуйте функцию <color red>​solution</​color>​.
 +<code php> ​
 +<?php
 +
 +solution(2147483648) # False
 +solution(87178291199) # True
 +</​code>​
 +**Решение:​**
 +<code php>
 +<?php
 +
 +function solution(int $num): bool
 +{
 +    if ($num < 2) {
 +        return false;
 +    }
 +
 +    for ($i = 2; $i <= sqrt($num); $i += 1) {
 +        if ($num % $i == 0) {
 +            return false;
 +        }
 +    }
 +
 +    return true;
 +}
 +</​code>​
 +</​details>​
 +
 +
 +
 +<​details>​
 +
 +<​summary>​**solutions/​solution.py**</​summary>​
 +Реализуйте функцию solution.
 +<code python>
 +from solution import solution
 +
 +solution(2147483648) # False
 +solution(87178291199) # True
 +</​code>​
 +**Решение:​**
 +<code python>
 +import math
 +
 +
 +def solution(number):​
 +    if number < 2:
 +        return False
 +
 +    sqrt = math.sqrt(number)
 +    for i in range(2, int(sqrt)):
 +        if number % i == 0:
 +            return False
 +
 +    return True
 +</​code>​
 +</​details>​
 +
 +
 +<​details>​
 +<​summary>​**solutions/​Solution.java**</​summary>​
 +В файле определите пакет <color red>​solutions</​color>​. Создайте в нем публичный класс Solution и реализуйте в нем публичный статический метод <color red>​run()</​color>​. Метод принимает в качестве параметра целое число типа <color red>​long</​color>​ и проверяет,​ является ли оно простым или нет
 +<code java>
 +Solution.run(2147483648);​ // false
 +Solution.run(87178291199);​ // true
 +</​code>​
 +Оптимизируйте алгоритм так, чтобы он выполнялся за наименьшее количество итераций
 +**Решение:​**
 +<code java>
 +package solutions;
 +
 +public class Solution {
 +    public static boolean run(long number) {
 +        if (number < 2) {
 +            return false;
 +        }
 +
 +        var sqrt = Math.sqrt(number);​
 +
 +        for (var i = 2; i <= sqrt; i++) {
 +            if (number % i == 0) {
 +                return false;
 +            }
 +        }
 +
 +        return true;
 +    }
 +}
 +</​code>​
 +</​details>​
 +
 +
 +
 +
 +
 +
 +
 +
  
-\\ 
  
  
basics_of_algorithms/algorithmic_complexity.1697807953.txt.gz · Последние изменения: 2023/10/20 16:19 — werwolf