All Projects → duseth → Thealgorithms

duseth / Thealgorithms

Licence: mit
Algorithms repository.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Thealgorithms

Data structure and algorithms library
A collection of classical algorithms and data-structures implementation in C++ for coding interview and competitive programming
Stars: ✭ 133 (+9.02%)
Mutual labels:  algorithm, algorithms, sorting-algorithms
Algorithms
A collection of algorithms and data structures
Stars: ✭ 11,553 (+9369.67%)
Mutual labels:  algorithm, algorithms, sorting-algorithms
.codebits
📚 List of resources for Algorithms and Data Structures in Python & other CS topics @2017
Stars: ✭ 144 (+18.03%)
Mutual labels:  algorithm, algorithms, computer-science
Pretty Algorithms
🌊 Pretty, common and useful algorithms with modern JS and beautiful tests
Stars: ✭ 2,163 (+1672.95%)
Mutual labels:  algorithms, computer-science, sorting-algorithms
Algorithms
My Algorithms and Data Structures studies. https://leandrotk.github.io/series/algorithms-problem-solving
Stars: ✭ 275 (+125.41%)
Mutual labels:  algorithm, algorithms, computer-science
C Plus Plus
Collection of various algorithms in mathematics, machine learning, computer science and physics implemented in C++ for educational purposes.
Stars: ✭ 17,151 (+13958.2%)
Mutual labels:  algorithm, algorithms, computer-science
Cs Books
📚 Computer Science Books 计算机技术类书籍 PDF
Stars: ✭ 2,915 (+2289.34%)
Mutual labels:  algorithm, algorithms, computer-science
Javascript Algorithms
📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings
Stars: ✭ 133,406 (+109249.18%)
Mutual labels:  algorithm, algorithms, computer-science
Ultimate Java Resources
Java programming. All in one Java Resource for learning. Updated every day and up to date. All Algorithms and DS along with Development in Java. Beginner to Advanced. Join the Discord link.
Stars: ✭ 143 (+17.21%)
Mutual labels:  wikipedia, algorithms, computer-science
Coding Interview University
A complete computer science study plan to become a software engineer.
Stars: ✭ 204,859 (+167817.21%)
Mutual labels:  algorithm, algorithms, computer-science
Robotics Coursework
🤖 Places where you can learn robotics (and stuff like that) online 🤖
Stars: ✭ 1,810 (+1383.61%)
Mutual labels:  algorithm, algorithms, computer-science
Algodeck
An Open-Source Collection of 200+ Algorithmic Flash Cards to Help you Preparing your Algorithm & Data Structure Interview 💯
Stars: ✭ 4,441 (+3540.16%)
Mutual labels:  algorithm, algorithms, sorting-algorithms
Dsa.js Data Structures Algorithms Javascript
🥞Data Structures and Algorithms explained and implemented in JavaScript + eBook
Stars: ✭ 6,251 (+5023.77%)
Mutual labels:  algorithm, algorithms, computer-science
Sortingalgorithm.hayateshiki
Hayate-Shiki is an improved merge sort algorithm with the goal of "faster than quick sort".
Stars: ✭ 84 (-31.15%)
Mutual labels:  algorithm, computer-science
C
Collection of various algorithms in mathematics, machine learning, computer science, physics, etc implemented in C for educational purposes.
Stars: ✭ 11,897 (+9651.64%)
Mutual labels:  algorithms, computer-science
Nokia Book
NOKIA Book covers selected aspects of the telecommunication industry programmer's work
Stars: ✭ 87 (-28.69%)
Mutual labels:  software, algorithms
Ivy
Visualization of sorting algorithm
Stars: ✭ 93 (-23.77%)
Mutual labels:  algorithm, sorting-algorithms
Algorithmic Toolbox San Diego
✔ My Solutions of (Algorithmic-Toolbox ) Assignments from Coursera ( University of California San Diego ) With "Go In Depth" Part Which Contains More Details With Each of The Course Topics
Stars: ✭ 78 (-36.07%)
Mutual labels:  algorithm, algorithms
Acm Icpc Algorithms
Algorithms used in Competitive Programming
Stars: ✭ 1,281 (+950%)
Mutual labels:  algorithm, algorithms
Algorithms
Algorithms and data structures implemented in JavaScript with explanations, for further readings
Stars: ✭ 99 (-18.85%)
Mutual labels:  algorithm, algorithms

The Algorithms.

front-image

Some information about the repository.

All algorithms are implemented on Python. For the execution of algorithms, the standard Python library version 3.6 is required. These algorithms are need for practice Python, a better understanding of algorithms and education the programming.

What is Algorithms?

  • Algorithm.
    In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems. Algorithms can perform calculation, data processing and automated reasoning tasks.
Source: Wikipedia
  • Computer algorithm.
    In computer systems, an algorithm is basically an instance of logic written in software by software developers to be effective for the intended "target" computer(s) to produce output from given (perhaps null) input. An optimal algorithm, even running in old hardware, would produce faster results than a non-optimal (higher time complexity) algorithm for the same purpose, running in more efficient hardware; that is why algorithms, like computer hardware, are considered technology.
Source: Wikipedia

Sorting Algorithms.

In computer science, a sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) which require input data to be in sorted lists; it is also often useful for canonicalizing data and for producing human-readable output.

Source: Wikipeadia

Bubble Sort.

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.

Visualization of bubble sort.

Visualization of bubble sort

Source: Wikipedia

Insertion Sort.

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.

Visualization of insertion sort.

Visualization of insertion sort

Source: Wikipedia

Gnome Sort.

It is a sorting algorithm which is similar to insertion sort, except that moving an element to its proper place is accomplished by a series of swaps, as in bubble sort. It is conceptually simple, requiring no nested loops.

Visualization of gnome sort.

Visualization of gnome sort

Source: Wikipedia

Cocktail Sort.

Cocktail shaker sort, also known as bidirectional bubble sort, cocktail sort, shaker sort (which can also refer to a variant of selection sort), ripple sort, shuffle sort, or shuttle sort, is a variation of bubble sort that is both a stable sorting algorithm and a comparison sort.

Visualization of cocktail sort.

Visualization of cocktail sort

Source: Wikipedia

Merge Sort.

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.

Visualization of merge sort.

Visualization of merge sort

Source: Wikipedia

Selection Sort.

In computer science, selection sort is a sorting algorithm, specifically an in-place comparison sort. It has O(n2) time complexity, making it inefficient on large lists, and generally performs worse than the similar insertion sort. Selection sort is noted for its simplicity, and it has performance advantages over more complicated algorithms in certain situations, particularly where auxiliary memory is limited.

Visualization of selection sort.

Visualization of selection sort

Source: Wikipedia

Shell Sort.

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).

Visualization of shell sort.

Visualization of shell sort

Source: Wikipedia

Bucket Sort.

Bucket sort, or bin sort, is a sorting algorithm that works by distributing the elements of an array into a number of buckets. Each bucket is then sorted individually, either using a different sorting algorithm, or by recursively applying the bucket sorting algorithm.

Visualization of bucket sort.

Visualization of bucket sort

Source: Wikipedia

Quick Sort.

Quicksort (sometimes called partition-exchange sort) is an efficient sorting algorithm, serving as a systematic method for placing the elements of an array in order. Developed by Tony Hoare in 1959 and published in 1961, it is still a commonly used algorithm for sorting.

Visualization of quick sort.

Visualization of quick sort

Source: Wikipedia

Comb Sort.

Comb sort is a relatively simple sorting algorithm originally designed by Włodzimierz Dobosiewicz in 1980. Later it was rediscovered by Stephen Lacey and Richard Box in 1991. Comb sort improves on bubble sort.

Visualization of comb sort.

Visualization of comb sort

Source: Wikipedia

Stooge Sort.

Stooge sort is a recursive sorting algorithm. The running time of the algorithm is thus slower compared to efficient sorting algorithms, such as Merge sort, and is even slower than Bubble sort, a canonical example of a fairly inefficient and simple sort.

Visualization of stooge sort.

Visualization of stooge sort

Source: Wikipedia

Searching Algorithms.

In computer science, a search algorithm is any algorithm which solves the search problem, namely, to retrieve information stored within some data structure, or calculated in the search space of a problem domain. Examples of such structures include but are not limited to a linked list, an array data structure, or a search tree. The appropriate search algorithm often depends on the data structure being searched, and may also include prior knowledge about the data. Searching also encompasses algorithms that query the data structure, such as the SQL SELECT command.

Source: Wikipeadia

Linear Search.

In computer science, linear search or sequential search is a method for finding a target value within a list. It sequentially checks each element of the list for the target value until a match is found or until all the elements have been searched.

Visualization of linear search.

Visualization of linear search

Source: Wikipedia

Binary Search.

In computer science, binary search, also known as half-interval search, logarithmic search, or binary chop, is a search algorithm that finds the position of a target value within a sorted array.

Visualization of binary search.

Visualization of binary search

Source: Wikipedia

Interpolation Search.

Interpolation search is an algorithm for searching for a given key in an indexed array that has been ordered by numerical values assigned to the keys (key values). It parallels how humans search through a telephone book for a particular name, the key value by which the book's entries are ordered. In each search step it calculates where in the remaining search space the sought item might be, based on the key values at the bounds of the search space and the value of the sought key, usually via a linear interpolation. The key value actually found at this estimated position is then compared to the key value being sought. If it is not equal, then depending on the comparison, the remaining search space is reduced to the part before or after the estimated position. This method will only work if calculations on the size of differences between key values are sensible.

Visualization of interpolation search.

Visualization of interpolation search
Visualization of interpolation search

Source: Wikipedia

Cryprography Algorithms.

Cryptography is the practice and study of techniques for secure communication in the presence of third parties called adversaries. More generally, cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages; various aspects in information security such as data confidentiality, data integrity, authentication, and non-repudiation are central to modern cryptography. Modern cryptography exists at the intersection of the disciplines of mathematics, computer science, electrical engineering, communication science, and physics. Applications of cryptography include electronic commerce, chip-based payment cards, digital currencies, computer passwords, and military communications.

Source: Wikipeadia

RSA.

RSA (Rivest–Shamir–Adleman) is one of the first public-key cryptosystems and is widely used for secure data transmission. In such a cryptosystem, the encryption key is public and it is different from the decryption key which is kept secret (private). In RSA, this asymmetry is based on the practical difficulty of the factorization of the product of two large prime numbers, the "factoring problem". The acronym RSA is made of the initial letters of the surnames of Ron Rivest, Adi Shamir, and Leonard Adleman, who first publicly described the algorithm in 1978. Clifford Cocks, an English mathematician working for the British intelligence agency Government Communications Headquarters (GCHQ), had developed an equivalent system in 1973, but this was not declassified until 1997.

Visualization of RSA.

Visualization of RSA

Source: Wikipedia

Caesar cipher.

In cryptography, a Caesar cipher, also known as Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet.

Visualization of Caesar cipher.

Visualization of Caesar cipher

Source: Wikipedia

Gronsfeld cipher.

The Gronsfeld cipher is a variant created by Count Gronsfeld which is identical to the Vigenère cipher, except that it uses just 10 different cipher alphabets (corresponding to the digits 0 to 9). The Gronsfeld cipher is strengthened because its key is not a word, but it is weakened because it has just 10 cipher alphabets. Gronsfeld's cipher did become widely used throughout Germany and Europe, despite its weaknesses.

Visualization of Gronsfeld cipher.

Visualization of Gronsfeld cipher

Source: Wikipedia

Morse code.

Morse code is a method of transmitting text information as a series of on-off tones, lights, or clicks that can be directly understood by a skilled listener or observer without special equipment. It is named for Samuel F. B. Morse, an inventor of the telegraph. The International Morse Code encodes the ISO basic Latin alphabet, some extra Latin letters, the Arabic numerals and a small set of punctuation and procedural signals (prosigns) as standardized sequences of short and long signals called "dots" and "dashes", or "dits" and "dahs", as in amateur radio practice.

Visualization of Morse code.

Visualization of Morse code

Source: Wikipedia

Vigenere cipher.

The Vigenère cipher is a method of encrypting alphabetic text by using a series of interwoven Caesar ciphers based on the letters of a keyword. It is a form of polyalphabetic substitution.

Visualization of Vigenere cipher.

Visualization of Vigenere cipher

Source: Wikipedia

Polybius Square cipher.

In cryptography, the Polybius square, also known as the Polybius checkerboard, is a device invented by the Ancient Greek historian and scholar Polybius, for fractionating plaintext characters so that they can be represented by a smaller set of symbols.

Visualization of Polybius Square cipher.

Visualization of Polybius Square cipher

Source: Wikipedia

Sincerely, Ilyas Salimov.
Email: [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].