Введение в алгоритмы

Опубликовано: 14 Января, 2022

Что такое алгоритм? Основы алгоритма

Слово «алгоритм» означает «процесс или набор правил, которым необходимо следовать при расчетах или других операциях по решению проблем». Следовательно, алгоритм относится к набору правил / инструкций, которые шаг за шагом определяют, как должна выполняться работа, чтобы получить ожидаемые результаты.

Это можно понять, взяв пример приготовления по новому рецепту. Чтобы приготовить новый рецепт, нужно прочитать инструкции и шаги и выполнить их один за другим в заданной последовательности. В результате получается новое блюдо, приготовленное безупречно. Точно так же алгоритмы помогают выполнить задачу в программировании, чтобы получить ожидаемый результат.
Разработанный алгоритм не зависит от языка, т. Е. Представляет собой простые инструкции, которые могут быть реализованы на любом языке, и все же результат будет таким же, как и ожидалось.

Каковы характеристики алгоритма?

Ведь при приготовлении рецепта нельзя следовать никаким письменным инструкциям, а только стандартным. Точно так же не все письменные инструкции по программированию представляют собой алгоритм. Чтобы некоторые инструкции были алгоритмом, они должны иметь следующие характеристики:

  • Ясный и недвусмысленный: алгоритм должен быть ясным и недвусмысленным. Каждый его шаг должен быть ясным во всех аспектах и иметь только одно значение.
  • Хорошо определенные входные данные : если алгоритм требует принимать входные данные, это должны быть четко определенные входные данные.
  • Четко определенные результаты: алгоритм должен четко определять, какой результат будет получен, и он также должен быть четко определен.
  • Конечность: алгоритм должен быть конечным, то есть он не должен заканчиваться бесконечными циклами или чем-то подобным.
  • Выполнимость: алгоритм должен быть простым, универсальным и практичным, чтобы его можно было выполнять при наличии доступных ресурсов. Он не должен содержать какие-то технологии будущего или что-то еще.
  • Независимость от языка: разработанный алгоритм должен быть независимым от языка, то есть это должны быть простые инструкции, которые могут быть реализованы на любом языке, и все же результат будет таким же, как и ожидалось.

Преимущества алгоритмов:

  • Это легко понять.
  • Алгоритм - это пошаговое представление решения данной проблемы.
  • В алгоритме проблема разбита на более мелкие части или этапы, поэтому программисту легче преобразовать ее в реальную программу.

Недостатки алгоритмов:

  • Написание алгоритма занимает много времени, поэтому это требует времени.
  • Операторы ветвления и цикла трудно показать в алгоритмах.

Как разработать алгоритм?

Для написания алгоритма необходимы следующие условия:

  1. Проблема, которую должен решить этот алгоритм.
  2. Ограничения проблемы, которые необходимо учитывать при решении задачи.
  3. Исходные данные, которые необходимо предпринять для решения проблемы.
  4. Вывода следует ожидать , когда проблема , с которой решается.
  5. Решение этой проблемы в заданных ограничениях.

Затем алгоритм записывается с помощью вышеуказанных параметров, так что он решает проблему.
Пример: рассмотрим пример сложения трех чисел и вывода суммы.

  • Шаг 1. Выполнение предварительных требований
    Как обсуждалось выше, для написания алгоритма должны быть выполнены его предварительные условия.
    1. Задача, которую решает этот алгоритм : сложите 3 числа и выведите их сумму.
    2. Ограничения задачи, которые необходимо учитывать при решении задачи : числа должны содержать только цифры и никаких других символов.
    3. Исходные данные, которые необходимо предпринять для решения проблемы: три числа, которые нужно сложить.
    4. Ожидаемый результат, когда проблема решена: сумма трех чисел, взятых в качестве входных.
    5. Решение этой проблемы при заданных ограничениях: Решение состоит в сложении трех чисел. Это можно сделать с помощью оператора '+', побитовым или любым другим способом.
  • Шаг 2: разработка алгоритма
    Теперь давайте спроектируем алгоритм с помощью вышеуказанных предварительных условий:
    Алгоритм сложения 3 чисел и вывода их суммы:
    1. НАЧНИТЕ
    2. Объявите 3 целочисленные переменные num1, num2 и num3.
    3. Возьмите три числа, которые нужно сложить, в качестве входных данных в переменных num1, num2 и num3 соответственно.
    4. Объявите целочисленную переменную sum для хранения итоговой суммы трех чисел.
    5. Сложите 3 числа и сохраните результат в переменной sum.
    6. Вывести значение переменной sum
    7. КОНЕЦ
  • Шаг 3: Тестирование алгоритма путем его реализации.
    Чтобы протестировать алгоритм, реализуем его на языке C.

Program:

C++

// C++ program to add three numbers
// with the help of above designed
// algorithm
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
     
    // Variables to take the input of
    // the 3 numbers
    int num1, num2, num3;
  
    // Variable to store the resultant sum
    int sum;
  
    // Take the 3 numbers as input
    cout << "Enter the 1st number: ";
    cin >> num1;
    cout << " " << num1 << endl;
  
    cout << "Enter the 2nd number: ";
    cin >> num2;
    cout << " " << num2 << endl;
  
    cout << "Enter the 3rd number: ";
    cin >> num3;
    cout << " " << num3;
  
    // Calculate the sum using + operator
    // and store it in variable sum
    sum = num1 + num2 + num3;
  
    // Print the sum
    cout << " Sum of the 3 numbers is: "
         << sum;
  
    return 0;
}
 
// This code is contributed by shivanisinghss2110

C

// C program to add three numbers
// with the help of above designed algorithm
 
#include <stdio.h>
 
int main()
{
 
    // Variables to take the input of the 3 numbers
    int num1, num2, num3;
 
    // Variable to store the resultant sum
    int sum;
 
    // Take the 3 numbers as input
    printf("Enter the 1st number: ");
    scanf("%d", &num1);
    printf("%d ", num1);
 
    printf("Enter the 2nd number: ");
    scanf("%d", &num2);
    printf("%d ", num2);
 
    printf("Enter the 3rd number: ");
    scanf("%d", &num3);
    printf("%d ", num3);
 
    // Calculate the sum using + operator
    // and store it in variable sum
    sum = num1 + num2 + num3;
 
    // Print the sum
    printf(" Sum of the 3 numbers is: %d", sum);
 
    return 0;
}
Output
Enter the 1st number: 0
Enter the 2nd number: 0
Enter the 3rd number: -1577141152

Sum of the 3 numbers is: -1577141152
  • + operator
  • Bit-wise operators
  • . . etc
  1. Priori Analysis: “Priori” means “before”. Hence Priori analysis means checking the algorithm before its implementation. In this, the algorithm is checked when it is written in the form of theoretical steps. This Efficiency of an algorithm is measured by assuming that all other factors, for example, processor speed, are constant and have no effect on the implementation. This is done usually by the algorithm designer. It is in this method, that the Algorithm Complexity is determined.
  2. Posterior Analysis: “Posterior” means “after”. Hence Posterior analysis means checking the algorithm after its implementation. In this, the algorithm is checked by implementing it in any programming language and executing it. This analysis helps to get the actual and real analysis report about correctness, space required, time consumed etc.
  • Time Factor: Time is measured by counting the number of key operations such as comparisons in the sorting algorithm.
  • Space Factor: Space is measured by counting the maximum memory space required by the algorithm.
  1. Space Complexity: Space complexity of an algorithm refers to the amount of memory that this algorithm requires to execute and get the result. This can be for inputs, temporary operations, or outputs.
    How to calculate Space Complexity?
    The space complexity of an algorithm is calculated by determining following 2 components: 
    • Fixed Part: This refers to the space that is definitely required by the algorithm. For example, input variables, output variables, program size, etc.
    • Variable Part: This refers to the space that can be different based on the implementation of the algorithm. For example, temporary variables, dynamic memory allocation, recursion stack space, etc.
  2. Time Complexity: Time complexity of an algorithm refers to the amount of time that this algorithm requires to execute and get the result. This can be for normal operations, conditional if-else statements, loop statements, etc.
    How to calculate Time Complexity?
    The time complexity of an algorithm is also calculated by determining following 2 components: 
    • Constant time part: Any instruction that is executed just once comes in this part. For example, input, output, if-else, switch, etc.
    • Variable Time Part: Any instruction that is executed more than once, say n times, comes in this part. For example, loops, recursion, etc.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.