# Synthesis-and-analysis-of-algorithms
Some exercises and course work on synthesis and analysis of algorithms.

The context of each folder is as follow:

## Exercise1 

GMD - greatest_common_divisor with different functions and methods.
  
## Exercise2 

The bracket balance check algorithm in an expression using a dynamic stack implementation.

## Exercise4 

Priority queue in which they are introduced tasks to perform. The program functions for adding and deleting are implemented
of an element in the priority queue, as well as a queue printing function. Dynamic conversion used.

## Exercise6 

 - Ex1 - A program that implements the algorithm for sorting an array by merging. Merge-sort algorithm.
 - Ex2 - Fibonacci algorithm 

## Exercise9

- Ex1 - Quick sort algorithm
- Ex2 - Digital sort algorithm 

## Exercise10

- Selection sort algorithm
- Insertion sort algorithm 
- Bubble sort algorithm
- Merge-sort sort algorithm
- Quick sort algorithm 
- Digital sort algorithm 

## Exercise11

- A tree for which each of the leaves contains a number from 1 to 9, and the other tops and roots contain the operations +, - and *. Crawl the tree to obtain the arithmetic expression in a form convenient for human perception (operand operation operand). After
the ‘=’ sign is displayed at the end of the expression and the value of the expression is printed.

## Exercise12

- Ex1 - Separate functions for each of the algorithms for search (non-recursive) of an element in an array.
- Ex2 - Implement the functions for adding, searching and deleting an item in a binary search tree.

## Exercise13

- Ex1 - A program that implements the algorithm for traversing a graph in depth.
The graph is set by a neighborhood matrix.
- Ex2 - A program that checks if a graph contains loops. For this purpose, the depth crawling algorithm implemented in exercise 1 is used.

## SAA_KR

Implementation of an algorithm that builds a pyramid of n numbers.
