/DS-ALGO

Primary LanguageJavaGNU General Public License v2.0GPL-2.0

Data Structures and Algorithms Collection

Data Structures

Data structures are the methods that helps software engineers to store data in software. Different storing methods can produce different levels of efficiency when using and accessing the stored data. In order to maximize efficiency, it is ideal to use a fitting data structure to the problem at hand.

Contains:

  • Stack
  • Linked List
  • Arrays
  • Binary Tree
  • Graph
  • Queue

Algorithms

An algorithm is simply a set of steps used to complete a specific task. Algorithm efficiency is the measure of the average execution time necessary for an algorithm to complete work on a set of data. In this context, algorithm efficiency has a direct relationship with computational resources. For this reason, it is ideal to maximize algorithm efficiency in order to reduce execution time.

Contains:

  • 2 String Algorithms
  • SPOJ list Algorithm
  • Searching Algorithms
  • Sorting Algorithms
  • Two Pointer Algoriths
  • Dynamic Programming Algorithms

Big O Notation

Big O notation is the mathematical notation that describes the efficiency of algorithms in worst case. With big O describing the algorithms complexity, the functions of the notation can be graphed and compared.

Common Big O Complexities

  • O(1)
  • O(log n)
  • O(n)
  • O(n log n)
  • O(n^k)
  • O(k^n)
  • O(n!)

The further down the list we go, the quicker the functions grow as data set sizes increase. As a result, a smaller Big O notation is ideal to achieve.

Contributing

If you have suggestions for how DS-ALGO could be improved, or want to report a bug, open an issue! We'd love all and any contributions.

For more, check out the Contributing Guide.