# Programming Sort Algorithms.

## What is an algorithm?

An algorithm is a set of directions laid out step by step to solve a problem or accomplish a task. Algorithms are usually used in mathematics or computer programming. However, we use algorithmic structures in our everyday lives to complete tasks. Anything we do that follows a process can be considered an algorithm. Making breakfast in the morning is a series of steps done one at a time to accomplish the goal of eating in the morning, but if we do those steps out of order, we can get back a very unexpected result.

In computer programming, algorithms are the logic backbone of any software or application. They are the main backbone for navigation systems, search engines, and targeted recommendations within applications.

## The importance of algorithms

Algorithms are not a new concept and were not invented with the introduction of computer programming. They have been around since ancient Egypt. Ancient Egyptians developed an algorithm that is a

“systematic method for multiplying two numbers that do not require the multiplication table.”

It only requires the ability to divide and multiply by 2. This method was called Egyptian multiplication.

Algorithms are still heavily used outside of computer science and are crucial in many industries.

In finance, they are used for loan risk assessments, fraud protection, and analyzing large datasets to identify patterns or anomalies.

Within marketing, algorithms are used to analyze customer habits and preferences to help with ad targeting.

Also, any industry that relies on supply logistics would utilize algorithms for route optimization to decrease delivery times and fuel consumption, saving companies a lot of money in the long run.

As you can see, many industries rely on algorithms. Algorithms allow us to break down complex problems into easily manageable steps to solve a larger, more complex problem. Since the inception of computers, those algorithms have become more complex and lightning-fast.

## Types of algorithms

Various types of algorithms are used in everyday programming. Some examples of common programming algorithms are:

Brute Force Algorithm — A brute force algorithm is an approach to solving a problem that checks every available option one by one until it finds the value or solution. This can be an effective solution to a problem, but it takes up time and processing power if the data that is being searched through is very large.

Searching Algorithms — Searching algorithms are used to find specific values within a set of data. Those values could encompass many different types of data structures, including lists, arrays, trees, or graphs. Here are some examples of searching algorithms.

## Linear Search

A linear search looks through a data structure (list, array, etc.) looking for a specific value. It starts at one end of the data structure and checks every value until it finds the specified value.

## Binary Search

Binary search also searches for a specific value within a data structure, but the method for finding that data differs greatly. Binary search must be used on a dataset that is already sorted. It uses the principle of divide and conquer. To find the value, it repeatedly divides the search interval in half.

## Jump Search

A jump search also looks for a value in a sorted array by jumping values in a fixed step. You can set the step to whatever value seems appropriate based on the array’s length.

Sorting Algorithms- A sorting algorithm rearranges data within a data structure of elements. Just like searching algorithms, sorting algorithms have many types to choose from

## Selection Sort

It searches the data structure for the smallest value and replaces it with the element at the first position. It then looks for the next lowest value, and the process repeats.

## Bubble Sort

Bubble sort repeatedly swaps the adjacent element in a list or array and swaps the values if they are in the wrong order.

## Merge Sort

It divides the data structure into halves, sorts the data from the smaller sections, and then merges the smaller sections back into one data structure.

These are just a few examples of searching and sorting algorithms used in programming. Other types of algorithms can include graph algorithms, numerical algorithms, and string-matching algorithms.

## Algorithms in coding

As stated previously, algorithms are used in computer science and coding daily. They are crucial in establishing how a program attempts to solve a problem. Algorithms are designed to break down the problem into step-by-step operations. Once you have your algorithm in place, the steps will be followed the same way every time, ensuring a reliable problem-solving technique. Reliability is one of the cornerstones of why algorithms are used. The data can change, but how the data is read and manipulated doesn’t.

Once you establish an algorithm that works on a specific data set, you can reuse it to solve similar coding problems. Making reusable algorithms can help streamline coding when establishing solutions to complex problems.

When writing an algorithm to solve a problem, you follow a step-by-step structure to develop that algorithm. Let’s look at a basic framework on how you would develop a well-thought-out algorithm.

## Understanding the problem

The first step in solving any problem using an algorithm is fully understanding it. Learn as much as possible about the problem before trying to solve it. Ask yourself, what is my outcome supposed to be? Think about what type of input the program is expecting. Are there any constraints or limitations for the project? Fully analyzing the goal of the program and the steps to get there is the first part of algorithmic problem-solving.

Without fully understanding the problem that is trying to be solved, how can you fully design a solution?

## Breaking down the problem

Once you fully understand the problem, it’s time to start breaking it down into smaller sub-tasks. Breaking down a complex problem into smaller tasks will help you organize your thoughts and make the problem less daunting. Breaking down the problem into smaller tasks can also help you better understand the problem.

Flowcharts can be a great way to break down the tasks of a programming problem. They show the individual steps of solving a problem in an easy-to-read format, visually showing how a program would be executed.

## Choosing the correct algorithm

But what algorithm is the correct one? Well, the answer depends on what you’re trying to accomplish. Choosing the correct algorithm depends on a few variables, including the problem you’re trying to solve, the data you’re working with, and the project limitations. But it all depends on the end goal. Following the structure of understanding the problem, breaking it down, and implementing a solution will help guide you in the right direction. When you fully understand the problem and break down the steps to solve it, it should become clear what algorithm to use.

Every problem you’re trying to solve in a computer programming setting will have different criteria. Using a sorting algorithm is probably the way to go if you are trying to sort data. A search algorithm should be used if you are searching for data. Sounds pretty easy, right? But not all problems are just searching and sorting. Depending on your end goal, you may use a completely different algorithm or a combination of multiple ones. You could use a graph algorithm, a string-matching algorithm, or a numerical algorithm. The sky is the limit.

Another criterion that needs to be considered when choosing an algorithm is time and space complexity, which we will touch on now.

## Time and Space Complexity

There are many different ways to answer the problem you are trying to solve, and many different algorithms can be used. However, time and space complexity are big factors in choosing the correct path to solve the problem.

Time complexity is based on the number of operations the program takes to finish running the program; the more operations you have, the longer it will take. Most operations are performed in split seconds, so you won’t see much difference if you run small programs. However, once you get into larger sets of data or larger programs, they can add up and make your program run much slower.

Space complexity is based on the memory the algorithm uses to execute the program fully.

## Final Thoughts

Algorithms provide a set of step-by-step instructions for a program to follow. They can be very simple or complex. Algorithms allow us to break down a larger problem into smaller, more manageable tasks. By tackling the smaller problems and bringing them together, we can better understand the larger problem.