/Data-Structures-and-Algorithms

A detailed description of Data Structures and Algorithms using Python

Primary LanguageJupyter Notebook

Data-Structures-and-Algorithms

A detailed description of Data Structures and Algorithms using Python


There are number of topics that will be covered like -

  • Time Complexity and Space Complexity:

       1. We start of by introducing with the concept of Time and Space Complexity, as this is one of the most important topic in order to get the best idea of how 
          much time will your code take to execute and how much space does it take in the memory.
       2. In order to understand any Alogrithm in detail, it becomes important that we understand the time and space complexity of any algorithm, and when we are able
          to do so, then we can easily choose that algorithm which fits best for our project.
    
  • Recursion:

          Before diving into Data Structures and Algorithm, it is best to understand the concept of Recursion. In this we will see various types of Recursion and how a
          recursion works.
    

Searching:

  • Linear Search:

          This will be the first algorithm with which we will start of. 
          Linear Search is a simple searching technique. It takes a time complexity of O(n). 
    
  • Binary Search:

          This is again a searching technique, but it is better than the Linear Search.
          Binary search can be implimented both by iterative techinque as well as by recursive technique.
          It takes a time complexity of O(log(n))
    

Sorting:

Sorting is a technique through which we can sort/arrange a list/array in either assending or desending order. Sorting can be of two types:

  1. Stable: In which the relative position of the similar-elements are not changed.
  2. Unstable: In which the relative position of the simlar-elements are changed.
  • Selection:

          A sorting techinque which checks each element in an array/list and compares it with every element, and hence divides the given list in two parts i.e. one with
          sorted part(left side of the list), while other with unsorted part(right side of the list).
          Selection sort is an unstable sort, with the time complexity of O(n^2).
          One point to remember is that O(n^2) is the time taken for searching the element, while time taken for comparison is order of O(n).