A programming algorithm is a computer procedure that is a lot like a recipe (called a procedure) and tells your computer precisely what steps to take to solve a problem or reach a goal. The ingredients are called inputs, while the results are called the outputs.

Posted by chris on: 2021-01-10, Category: Algorithm

*The time required to crack an encryption algorithm is directly related to the length of the key used to secure the data.*

Every so often, we encounter someone still using antiquated DES for encryption. If your organization hasn’t switched to the Advanced Encryption Standard (AES), it’s time for an upgrade. To better understand why: let’s compare DES and AES encryption:

Posted by chris on: 2021-01-10, Category: Algorithm

When it comes to cyber security, AES is one of those acronyms that you see popping up everywhere. That’s because it has become the global standard of encryption and it is used to keep a significant amount of our communications safe.

The Advanced Encryption Standard **(AES)** is a fast and secure form of encryption that keeps prying eyes away from our data. We see it in messaging apps like **WhatsApp** and **Signal**, programs like **VeraCrypt** and **WinZip**, in a range of hardware and a variety of other technologies that we use all of the time.

Posted by chris on: 2020-12-30, Category: Algorithm

Like Merge Sort, QuickSort is a Divide and Conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. There are many different versions of quickSort that pick pivot in different ways.

- Always pick first element as pivot.
- Always pick last element as pivot (implemented below)
- Pick a random element as pivot.
- Pick median as pivot.

The key process in quickSort is partition(). Target of partitions is, given an array and an element x of array as pivot, put x at its correct position in sorted array and put all smaller elements (smaller than x) before x, and put all greater elements (greater than x) after x. All this should be done in linear time.

Like Merge Sort, QuickSort is a Divide and Conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. There are many different versions of quickSort that pick pivot in different ways.

- Always pick first element as pivot.
- Always pick last element as pivot (implemented below)
- Pick a random element as pivot.
- Pick median as pivot.

The key process in quickSort is partition(). Target of partitions is, given an array and an element x of array as pivot, put x at its correct position in sorted array and put all smaller elements (smaller than x) before x, and put all greater elements (greater than x) after x. All this should be done in linear time.

Posted by chris on: 2019-08-12, Category: Algorithm

Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order.

**Example:**
**First Pass:**

- (
**5****1**4 2 8 ) –> (**1****5**4 2 8 ), Here, algorithm compares the first two elements, and swaps since 5 > 1. - ( 1
**5****4**2 8 ) –> ( 1**4****5**2 8 ), Swap since 5 > 4 - ( 1 4
**5****2**8 ) –> ( 1 4**2****5**8 ), Swap since 5 > 2 - ( 1 4 2
**5****8**) –> ( 1 4 2**5****8**), Now, since these elements are already in order (8 > 5), algorithm does not swap them.

Posted by chris on: 2019-08-07, Category: Algorithm

*Counting sort* is a sorting technique based on keys between a specific range. It works by *counting* the number of objects having distinct key values (kind of hashing). Then doing some arithmetic to calculate the position of each object in the output sequence.

**Let us understand it with the help of an example.**

```
For simplicity, consider the data in the range 0 to 9.
Input data: 1, 4, 1, 2, 7, 5, 2
1) Take a count array to store the count of each unique object.
Index: 0 1 2 3 4 5 6 7 8 9
Count: 0 2 2 0 1 1 0 1 0 0
```