Giter Club home page Giter Club logo

algorithms-explanation's Introduction

Algorithms explanation

Gitter chat  contributions welcome  Repository size  Discord chat

Popular algorithms explained in simple language with examples and links to their implementation in various programming languages and other required resources.

Languages

To add a new language, create a new folder using 2 character ISO 639-1 code of that language. For example use hi for Hindi explanations.

algorithms-explanation's People

Contributors

aminoxix avatar anupkumarpanwar avatar appgurueu avatar ashwek avatar cclauss avatar david-xander avatar domix80 avatar dynamitechetan avatar jinyounghan avatar jwpark6 avatar kangpungyun avatar leoriem-code avatar leoven avatar mertcandav avatar msaf9 avatar mstrechen avatar orionjoshi avatar panquesito7 avatar pea-sys avatar rayahazi avatar romankurnovskii avatar seminkim avatar shrutikahilale avatar siva-balan avatar spidermath avatar swastyy avatar varunu28 avatar vbrazo avatar vil02 avatar woo-jk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

algorithms-explanation's Issues

Invalid link in md file

In this repository most of the md file has invalid link.

So I updated it. please check it. I hope it helps.

[OTHER] Link implementations to website

What would you like to share?

Instead of specifying the implementations in other languages and its link to them, we should probably add an implementation link using The Algorithms' website (if the algorithm's even available). This way, it will show all implementations with links to them without having to write them down manually.

What do you think about this? Thanks. 🙂

Additional information

No response

Would you like to work on this issue?

  • Yes, I want to work on this issue!

Fix code implementation links in `Bellman-Ford.md`

[FEATURE] Add Kadane's Algorithm

Detailed description

Kadane's Algorithm is one of the most useful and powerful dynamic programming algorithm.
Time complexity: O(n)
Space complexity: O(1)

Context

DSA questions like Maximum Subarray Sum requires dynamic programming algorithms to solve them efficiently. In an array, subarrays are the contiguous part inside another array which only contains contiguous elements.

  • Maximum Subarray Sum problem states that: Given an array of integers, the task is to find the maximum subarray sum possible of all the non-empty subarrays (meaning the subarray must contain at least one element).

  • So, Kadane’s Algorithm is an iterative dynamic programming algorithm. The simple idea is it calculates the maximum subarray sum ending at a particular position by using the maximum subarray ending sum at the previous position.

Possible implementation

No response

Additional information

No response

[OTHER] As mention in the issue #154 there are some links broken not only java once

What would you like to share?

So I would like to know this

  • is these link generated - by a set of code or do you just type it out
    • if yes can you guys share
    • if not is it not going to be a TDS job to keep fixing this type of thing and keep implementing new links for that part like there is the same problem with the
      Screenshot (137)
      Screenshot (138)
      c++ link too.

Additional information

No response

Would you like to work on this issue?

  • Yes, I want to work on this issue!

Coin Change Problem in Dynamic Programming Section

What is there in Coin Change.md?
Only a variation of unbounded Knapsack

Issue:
There exists many more variations like having a fixed number of coins or say a problem where we want to find the number of ways (ordered) a sum of money can be formed

Suggested Solution:
We can add these two explanations separately in files.

Better explanation for LCS

Hi, I've been always NOT understanding LCS & DP in general. In the LCS explanation, these sentences

If we throw A, our LCS length will be dp[i - 1][j] (since we have prefixes S[1..i - 1] and T[1..j]). If we try to throw B character, we will have prefixes S[1..i] and T[1..j - 1] so the length of LCS will be dp[i][j - 1].

seem to claim that dp[i][j] = dp[i - 1][j] = dp[i][j - 1], which is not the case.

Can we have a better explanation?

[FEATURE] Add a PR template

Detailed description

Adding a pull request template will make the work for maintainers much easier.

Context

This would make the review process easier, plus, letting the maintainers/reviewers know what the PR is about, useful information, and more.

Possible implementation

No response

Additional information

If you wanna work on this, feel free to raise a PR. Contributions are always welcome!

[OTHER] Duplicated Korean translations

What would you like to share?

In ko, there are some duplicated translations. For example, 정렬(sorting) and 정렬 알고리즘(sorting algorithm) are both present in this directory. Same for 탐색(searching) and 탐색 알고리즘(searching algortihm).

Additional information

I think those directories should be merged to one, deleting duplicated translations.

Would you like to work on this issue?

  • Yes, I want to work on this issue!

[FEATURE] Add contributing guidelines

Detailed description

With a contributing guidelines file, contributors to our repository will know easier how can they add new quality, understandable, and correct implementations to our repository.

Context

This will make it easier for the community to make contributions easier.

Possible implementation

No response

Additional information

No response

Explain the Algorithms in English.

Please write the explanation and steps of the algorithms implemented in other repositories of this organization and follow the template given in the README.md file.

NOTE : For each algorithm create a .md file and send a Pull Request.

Tree Algorithms

Aim

To create a directory in data structures for trees and adding tree-related algorithm explanations there

It will include

  • Binary Tree and BST implementation as ADT
  • Height order traversal: Inorder traversal (both recursive and non-recursive)
  • Height order traversal: Preorder traversal (both recursive and non-recursive)
  • Height order traversal: Postorder traversal (both recursive and non-recursive)
  • Level order traversal (both recursive and non-recursive)
  • Vertical order traversal (both recursive and non-recursive)

for BST:

  • BST searching
  • BST addition
  • BST deletion

NOTE

Including above algos if not already implemented or included in other Repos.

There are some mispelled words, etc. in spanish

I've been reading the spanish versions of the algorithms and I've found out some mispelled words and not so good translations of word that prone to confusion. I don't know if I can fix them by myself for the sake of contribution or if I just have to make a list and let you know.

And also, if I'm able to fix them myself, if I would have to make a PR for each one, or for each doc, or for the complete set of files fixed. Thank you in advanced.

Title typo

Title for this repo shouldn't be Algorithms-Explanation?

[FEATURE] RSA Algorithm Explanation

Detailed description

Add a explainer for RSA Algorithm with Example and Code Snippets.

Context

This change should introduce a explainer for RSA Algorithm for encryption and decryption.

Possible implementation

No response

Additional information

No response

[FEATURE]

Detailed description

Hello There is no stack data structure added in the folder under en

Context

Since the folder does still have a lot of topics to cover I have proposed the idea of adding stacks

Possible implementation

I have created a pr and request u to review my suggestions

Additional information

No response

[FEATURE] Promotion of repository

Detailed description

Due having a ton of entries, it seems like a lot of the entries have no explanation accompanying them, leaving them vague and confusing to say the least! So now obviously, it's not easy to write documentation for the same, with people being more interested in writing code (which is understandable). But I was suggesting if we could maybe promote this repository (not in a bad sense) to the people who are contributing to other repositories of this organisation to maybe also spend some time helping out on this portion of the organisation to revive the explanations to make the site actually helpful, instead of being a place to just get code of algorithms from, kinda.

Context

Context provided in description

Possible implementation

The way we could promote or so on the top of my mind are:

  • Drawing attention to this repository on the website, by adding some non-intrusive pop-ups and urging interested users to contribute
  • Promoting contribution to this repository during Hacktoberfest, since it is not that difficult to really add one page of documentation for the swathes of PRs this organisation gets anyways

Additional information

Please note that these aren't all possible ways to promote the repo, so you (the person reading this) should also probably try to come up with some other ways.
Some possible issues with the promotion of repository:

  • Our entries aren't that... organised to say the least. They are indeed a mess, I'll admit, and it can cause a few issues and confusion
  • If we promote the repo during Hacktoberfest, then we'll definitely get tons of useless PRs with a bunch of single lines filled in, or improper formatting, which may bog down the few maintainers we have for this repository, who may also be dealing with swathes of spam PRs in other repositories for Hacktoberfest, which will be insane for the maintainers.

These are atleast some of the things we'll need to consider while trying to promote this repo, along with some other things which didn't cross my mind while typing this issue out. I'd like to have a proper discussion for this here. But regardless, we definitely are in dire need of more documentation for the site.

Heap sort

Need to write more regarding complexities for Build Heap and Heapify.

  • Build Heap takes O(n) complexity and not O(n*logn)
  • Heapify takes O(logn)

Add magic square concept in basic maths

What would you like to share?

magic square in odd order concept

it is a famous square in maths

i will explain everything about it in basic maths folder..
please assign it to me...

Additional information

No response

Would you like to work on this issue?

  • Yes, I want to work on this issue!

Translators' admissions

Algorithms-Explanation is already doing a good job in terms of translations. We already have:

  • Brazilian Portuguese
  • English
  • Spanish
  • Nepali

I think we're still missing some people to lead other languages like:

  • Japanese
  • Mandarim
  • French
    and others? thoughts?

We welcome any contributor to build this and suggest new languages.

Recursive version of algorithms

Hello!

I would like to implement sorting/searching algorithms recursively. While they don't necessarily have an advantage over iterative versions, they can be useful to check one's understanding of the algorithm and recursion.

If this sounds good, I request to be assigned to this issue :-)

Basic Math issues

What sort of algorithms come under basic math? Currently I see that there is a file for mean. Should I go along that line and write about statistical algorithms?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.