Find a file
2020-10-30 03:51:48 +09:00
.github/workflows Create update_directory_md.yml 2020-04-16 22:25:55 +08:00
ciphers Add merkle-hellman cryptosystem implementation 2020-10-12 21:41:20 +02:00
data_structures Fix the programming style (make it more idiomatic to Ruby) 2020-10-12 18:59:48 +02:00
discrete_mathematics fix syntax of other and discrete_mathmatics 2020-05-14 11:11:55 +09:00
other fix syntax of other and discrete_mathmatics 2020-05-14 11:11:55 +09:00
Project Euler Add solution for the Project Euler Problem 4 2020-10-30 03:51:48 +09:00
Searches Add depth first search 2020-10-04 13:06:47 +07:00
Sorting fix filename to snake_case 2020-05-14 11:20:14 +09:00
DIRECTORY.md updating DIRECTORY.md 2020-10-15 21:49:23 +00:00
README.md Update README.md 2020-04-16 22:27:58 +08:00

The Algorithms - Ruby

All algorithms implemented in Ruby (for education)

These are for demonstration purposes only. For a full list of all algorithms, please see:DIRECTORY.md

Sorting Algorithms

Bogo Sort

alt text

From Wikipedia: Bogo sort is a highly ineffective sorting function based on the generate and test paradigm. The function successively generates permutations of its input until it finds one that is sorted. It is not useful for sorting, but may be used for educational purposes, to contrast it with more efficient algorithms.

Properties

  • Unbounded (randomized version), O((n+1)!) (deterministic version)
  • Best case performance O(n)
  • Average case performance O((n+1)!)

Bubble Sort

alt text

From Wikipedia: Bubble sort, sometimes referred to as sinking sort, is a simple sorting algorithm that repeatedly steps through the list to be sorted, compares each pair of adjacent items and swaps them if they are in the wrong order. The pass through the list is repeated until no swaps are needed, which indicates that the list is sorted.

Properties

  • Worst case performance O(n^2)
  • Best case performance O(n)
  • Average case performance O(n^2)
View the algorithm in action

Insertion Sort

alt text

From Wikipedia: Insertion sort is a simple sorting algorithm that builds the final sorted array (or list) one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort.

Properties

  • Worst case performance O(n^2)
  • Best case performance O(n)
  • Average case performance O(n^2)
View the algorithm in action

Selection Sort

alt text

From Wikipedia: The algorithm divides the input list into two parts: the sublist of items already sorted, which is built up from left to right at the front (left) of the list, and the sublist of items remaining to be sorted that occupy the rest of the list. Initially, the sorted sublist is empty and the unsorted sublist is the entire input list. The algorithm proceeds by finding the smallest (or largest, depending on sorting order) element in the unsorted sublist, exchanging (swapping) it with the leftmost unsorted element (putting it in sorted order), and moving the sublist boundaries one element to the right.

Properties

  • Worst case performance O(n^2)
  • Best case performance O(n^2)
  • Average case performance O(n^2)
View the algorithm in action

Shell Sort

alt text

From Wikipedia: Shellsort, also known as Shell sort or Shell's method, is an in-place comparison sort. It can be seen as either a generalization of sorting by exchange (bubble sort) or sorting by insertion (insertion sort).[3] The method starts by sorting pairs of elements far apart from each other, then progressively reducing the gap between elements to be compared. Starting with far apart elements, it can move some out-of-place elements into position faster than a simple nearest neighbor exchange. Donald Shell published the first version of this sort in 1959.[4][5] The running time of Shellsort is heavily dependent on the gap sequence it uses. For many practical variants, determining their time complexity remains an open problem.

Properties

  • Worst case performance O(n^2)
  • Best case performance O(n log n)
  • Average case performance depends on gap sequence
View the algorithm in action