GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - mik30s/Algorithm-Implementations: Share, discuss and learn about algorithm implementations!

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

1,533 Commits
1,533 Commits

Folders and files

NameName
Last commit message
Last commit date
100_Doors_Problem
100_Doors_Problem
 
 
10_Harshad_Number
10_Harshad_Number
 
 
99_Bottles_Problem
99_Bottles_Problem
 
 
A_Star_Search
A_Star_Search
 
 
Ackermann
Ackermann
 
 
Alpha_Beta_Pruning
Alpha_Beta_Pruning
 
 
Average
Average
 
 
Bellman_Ford_Search
Bellman_Ford_Search
 
 
Best_First_Search
Best_First_Search
 
 
Binary_Search
Binary_Search
 
 
Binary_Search_Tree
Binary_Search_Tree
 
 
Bloom_Filter/Python/argvk
Bloom_Filter/Python/argvk
 
 
Bogobogosort
Bogobogosort
 
 
Bogosort
Bogosort
 
 
Boyer_Moore_Horspool
Boyer_Moore_Horspool
 
 
Bozosort
Bozosort
 
 
Breadth_First_Search
Breadth_First_Search
 
 
Brent_Cycle_Detection_Algorithm
Brent_Cycle_Detection_Algorithm
 
 
Bresenham_Based_Supercover_Line
Bresenham_Based_Supercover_Line
 
 
Bresenham_Line
Bresenham_Line
 
 
Bubble_Sort
Bubble_Sort
 
 
Burrows_Wheeler_Transform
Burrows_Wheeler_Transform
 
 
Caesar_Cipher
Caesar_Cipher
 
 
Catalan_Numbers
Catalan_Numbers
 
 
Chebyshev_distance
Chebyshev_distance
 
 
Cocktail_Sort
Cocktail_Sort
 
 
Collatz_chain
Collatz_chain
 
 
Comb_Sort
Comb_Sort
 
 
Convex_hull
Convex_hull
 
 
Counterfeit_Coin_Problem
Counterfeit_Coin_Problem
 
 
Counting_Sort
Counting_Sort
 
 
Cryptography
Cryptography
 
 
Dangerous_Content
Dangerous_Content
 
 
Decimal_To_Fraction
Decimal_To_Fraction
 
 
Dekkers_algorithm
Dekkers_algorithm
 
 
Depth_First_Search
Depth_First_Search
 
 
Depth_Limited_Search
Depth_Limited_Search
 
 
Derivative
Derivative
 
 
Dijkstra's_Shortest_Path
Dijkstra's_Shortest_Path
 
 
Egyptian_Fractions
Egyptian_Fractions
 
 
Einstein_Puzzle
Einstein_Puzzle
 
 
Euclidean_Norm
Euclidean_Norm
 
 
Euclidean_algorithm
Euclidean_algorithm
 
 
Euclidean_distance
Euclidean_distance
 
 
Expression_Evaluation/Java
Expression_Evaluation/Java
 
 
Factorial
Factorial
 
 
Fast_Inv_Sqrt
Fast_Inv_Sqrt
 
 
Fibonacci_series
Fibonacci_series
 
 
Fisher-Yates
Fisher-Yates
 
 
FizzBuzz
FizzBuzz
 
 
Floyd_Cycle_Detection_Algorithm
Floyd_Cycle_Detection_Algorithm
 
 
Floyd_Warshall
Floyd_Warshall
 
 
Gale_Shapely
Gale_Shapely
 
 
Gauss_Seidel_Algorithm
Gauss_Seidel_Algorithm
 
 
Gnome_sort
Gnome_sort
 
 
Golden_Ratio_Algorithms
Golden_Ratio_Algorithms
 
 
Hamming_Code
Hamming_Code
 
 
Hamming_Distance
Hamming_Distance
 
 
Hamming_Weight
Hamming_Weight
 
 
Happy_Number
Happy_Number
 
 
Heap_Sort
Heap_Sort
 
 
HuffmanCoding
HuffmanCoding
 
 
Insertion_Sort
Insertion_Sort
 
 
Interesection_of_Points
Interesection_of_Points
 
 
Iterative_Deepening_Depth_First_Search
Iterative_Deepening_Depth_First_Search
 
 
Johnson_Search
Johnson_Search
 
 
Josephus_Problem
Josephus_Problem
 
 
KMeans_Clustering
KMeans_Clustering
 
 
Knapsack
Knapsack
 
 
Knuth_Morris_Pratt
Knuth_Morris_Pratt
 
 
Kruskal_Minimum_Spanning_Tree
Kruskal_Minimum_Spanning_Tree
 
 
Lempel_Ziv_Welch
Lempel_Ziv_Welch
 
 
Levenshtein_distance
Levenshtein_distance
 
 
Linear_Search
Linear_Search
 
 
Longest_Palindrome/Objective-C
Longest_Palindrome/Objective-C
 
 
Mandelbrot_Set
Mandelbrot_Set
 
 
Manhattan_distance
Manhattan_distance
 
 
Markov-Chain
Markov-Chain
 
 
Maximum_Subarray
Maximum_Subarray
 
 
Memoization
Memoization
 
 
Merge_Sort
Merge_Sort
 
 
Minimax
Minimax
 
 
Minkowski_distance
Minkowski_distance
 
 
Monty_Hall_Problem
Monty_Hall_Problem
 
 
Move_To_Front_Transform
Move_To_Front_Transform
 
 
N_Queens_Problem
N_Queens_Problem
 
 
Negamax
Negamax
 
 
Newton_Raphson
Newton_Raphson
 
 
Palindrome
Palindrome
 
 
Partial_Selection_Sort
Partial_Selection_Sort
 
 
Patience_Sort
Patience_Sort
 
 
Pi_Algorithms
Pi_Algorithms
 
 
Pollard_Rho_Algorithm
Pollard_Rho_Algorithm
 
 
Polynomial_Operations/Java/aayushKumarJarvis
Polynomial_Operations/Java/aayushKumarJarvis
 
 
Prim_Minimum_Spanning_Tree
Prim_Minimum_Spanning_Tree
 
 
Quick_Sort
Quick_Sort
 
 
ROT13_Cipher
ROT13_Cipher
 
 
ROT47_Cipher
ROT47_Cipher
 
 
Rabin_Karp
Rabin_Karp
 
 
Radix_Sort
Radix_Sort
 
 

Repository files navigation

#Algorithm Implementations

Join the chat at https://gitter.im/kennyledet/Algorithm-Implementations

(Note: there is a backstory on my motivation for starting this at the bottom of this README)

Updates

Update 7/19/15 Please include tests with your implementation submissions! Please see Issue #459 on instructions. Thanks for understanding!! <3

Update 1/4/15 Our site is now getting hundreds of unique visitors and thousands of pageviews per day :)

Algorithm.zone

Update 06/09/14 I have released a native Android app for viewing the algorithms! It's a wrapper around the web app with some native functionality. Check it out on Google Play here Algorithm Implementations Android App

Update 05/09/14: I am working on a web application that will tie things up in a much more fluid way, and help exhibit the algorithms to those who either don't know much about git/github, or just can't be vexed clicking through all the folders. This will open the repo up to a much wider audience in general!

You can see a preview here! Algorithms Implementations Website

Please offer up your suggestions in the Issues section of the Github repository

Update 12/30/13: I have given the 3 top committers (jcla1, PatrickYevsukov, dalleng) collaborator access. This was very well earned, as they have managed to contribute much more to this repo than I have had the time to.

Again, thanks so much for the consistency guys, it is extremely appreciated. It made sense to start with giving these guys collab access for obvious reasons, but I also thank every single person who has even submitted a pull request. Without you all, this repository would be nothing.

Purpose

We see tons of interesting projects that are actively contributed to here on Github. Seriously, it's very powerful.

Unfortunately, I haven't really spotted (a popular and language agnostic) one where people used the power of Git to share, discover, discuss and improve algorithm implementations!

Send us a pull request, and we will add any implementation of any algorithm you have so long as it at least mostly suits the following conventions.

Conventions

  • Language doesn't matter. Just make sure you're implementing an algorithm.

  • Submissions should follow this directory structure

      Algorithm_Name/Language_Name/username/filename.extension
      Algorithm_Name/Language_Name/username/filename_test.extension
    
  • Please include a description of the algorithm you are implementing; it doesn't really matter if it's copied from Wikipedia or not (citations please), but this really does help people who are trying to find new algorithms to implement and contribute by browsing this repository.

  • When implementing a new algorithm, create a "tags" file in the algorithm's root directory and add some appropriate tags

  • Please package your code in a directory bearing your GitHub username. git blame is cool, and has many more appropriate applications, but in this context I'd rather pull a flat list of files and be able to check out everyone's contributions that way than have to look through the revisions.

  • Each algorithm should have its corresponding unit test cases (as directory structure suggested above) which covers the corner cases, happy/unhappy paths. Please see Issue #459 for further discussion on this topic.

    The advantage of doing so is to assert that everything is covered, and that the algorithm is not broken between code changes.

    It also helps newbies to have a quick look at the unit test cases to understand the basic usecase of the algorithm.

  • Documentation inside the code is recommended. This helps others in understanding the code base.

  • Have fun!

Resources

We should also keep a curated list of resources dealing with algorithms.

####Introductory Books

  • Introduction to Algorithms (CLRS)
  • Algorithms (Dasgupta, Papadimitriou, and Vazirani)
  • The Algorithm Design Manual (Steven Skiena)
  • Algorithms, 4th Edition (Robert Sedgewick, Kevin Wayne)

####Sites

  • LiteratePrograms (TONS of code samples in various problem domains)
  • UVa Online Judge (TONS of problems to solve, automatic judging)
  • Stony Brook Algorithm Repository
  • The Archive of Interesting Code
  • ACM Collected Algorithms(CALGO)

####Online Classes

  • Algorithms Part I - Coursera
  • Algorithms Part II - Coursera
  • Algorithms: Design and Analysis, Part 1 - Coursera
  • Algorithms: Design and Analysis, Part 2 - Coursera

Backstory

I have been "coding" since I was about 12, and have been teaching myself software engineering principles through solving problems in various languages through practice, freelance work and my own projects.

But, you see, it wasn't until a couple of years ago in high school when I started to truly see the light about how languages are merely tools; I basically realized what is common sense to me now - to truly be able to call one's self a proficient programmer, one must go beyond simple syntax slinging and be capable of efficiently solving a much wider subset of problems within computer programming than the average programmer.

Of course, this was merely one of the initial revelations that led to the revelation that ultimately led to this repository.

When I decided to become a Computer Science major, I took the initiative to research actual Computer Science topics, outside of class, as I've always been more of a self-learner.

Lo and behold, CS and practical software engineering turned out to be two entirely different things.

I won't go into my whole journey up til this point in this README, but tl;dr:

There are many problem domains which are simply closed off to the programmer who stagnates in his learning and never studies how to analyze algorithms and develop his own. This is objectively true.

I also have a much greater level of respect towards my profession now, and take it very seriously. I have a relatively rigorous base education roadmap that I've laid out for myself. Even being just a core subset of skills from which I will base subsequently developed skills on, it's quite expansive and diverse. I do not plan on stagnating, ever.

Bitdeli Badge

About

Share, discuss and learn about algorithm implementations!

algorithm.zone

Resources

Readme
MIT license
Activity

Stars

0 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.