NOTIFICATION: These examples are provided for educational purposes. Using this code is under your own responsibility and risk. The code and information is given ‘as is’. I do not take responsibilities of how they are used.

List of Common Algorithms – Part 2 >

1. Insertion sort: Efficient for sorting small number of elements. Remove one element at a time and insert it back into the correct position.
2. Merge sort: Divide-and-conquer sorting algorithm. Divide the problem into small sub-problems. Solve the sub-problems recursively. Combine the solution of the sub-problems into the solution for the original problem.
3. Bubble sort: Repeatedly swap adjacent elements in the right order.
4. Horner’s polynomial rule: A rule which the number of necessary multiplications and results in less numerical instability due to potential subtraction of one large number from another are reduced.
5. Permute-By-Sorting: Randomized algorithm in which the input is randomized by permuting the input array. This algorithm belong to the uniform random permutation algorithms.
6. Randomize-In-Place: This algorithm belong to the uniform random permutation algorithm.
7. Heapsort: Array in which elements can be viewed as a complete binary tree. Each node satisfy a heap property.
8. Max-Heapify: subroutine for manipulating max-heaps. Normally used for Heapsort.
9. Priority Queues: A set of data sequence in which each set of elements is associated with a value called key.
10. Quicksort: Divide-and-conquer sorting algorithm. Uses a partition algorithm in order to divided the array.
11. Random Sampling Quicksort: This version of the Quicksort algorithm performs a randomized-partition.
12. Hoare partition: This version of the Quicksort algorithm performs a partition with the use of two indices in which each begins at the extreme ends of the input array.
13. Stooge sort: Recursively sorting algorithm. Slower than Bubble sort.
14. Stack Depth: Also known as tail recursion. After the partition, first sub-array to be recursively shorted will be the left sub-array, then the right sub-array.
15. Median-of-3 partition: An improved version of the Randomized-Quicksort.
16. Fuzzy sorting of intervals: Produce a permutation of the intervals such that the existent must satisfy a rule.
17. Counting sort: For each input element, determine the number of elements less than the input. Assumes that the input consists of integers in a small range.
18. Radix sort: Used for card-sorting. All cards are organized into 80 columns.  In each column a card is punched into one of twelve places. Then a sort is perform on a list of seven 3-digit numbers.
19. Bucket sort: Similar to counting sort however it assumes that the input is generated by a random process in which the numbers are distributed uniformly and independently over an interval [0,1).
20. Randomized-Select: This algorithm only works on one side of the partition instead of both as in Quicksort. This algorithm uses a Randomized-Partition.
21. Stacks: In a stack, the stack can implement a last-in, first-out (LIFO) policy or first-in, first-out (FIFO) policy.
22. Queue: An stack with FIFO property which have a head and a tail.
23. Enqueue: Insert operation on a queue.
24. Dequeue: Delete operation on a queue.
25. Linked-list: data structure in which each node is arranged in a linear order.
26. Binary Tree: A parent node which have a left and right child node.
27. Hash Tables: Generalization of a simpler notion of an ordinary array. It performs a direct addressing, applicable when allocating an array that has one position for every possible key is affordable.
28. Direct-Address Tables: A dynamic set is represented by an array or direct-address table in which each slot (or position) correspond to a key.
29. Open Addressing: Each table entry contain either an element of the dynamic set or none; therefore, we can say that all elements are being store in the hast table itself.
30. Double Hashing: A method of open addressing in which permutations produced have randomly even permutations.
31. Red-Black Trees: Binary tree in which each node have an extra bit of storage which is use to indicate the colour of the node: red or black.
32. Matrix-chain multiplication: Compute the product of a given sequence (chain) of n number of matrices.
33. Length of Less Common Denominator (LCS): Compute two sequences as input.
34. Bitonic Euclidean Travelling-Salesman Problem: Also known as TSP. Algorithm that help to simplify the problem of determining the shortest closed tour that connects a set of given points.
35. Viterbi Algorithm: Algorithm used for speech recognition. It help to solve a labelled graph made of  a person speaking a restricted language.
36. Greedy Algorithm: It is an algorithm in which the best looking choice is made at the moment.
37. Fractional Knapsack Problem: Greedy algorithm for a problem related with items size, their price and storage.
38. Huffman Algorithm: Algorithm use for compressing data in an effective way.
39. B-Trees: Balanced search trees.
40. Binomial trees: ordered tree defined recursively.
41. Binomial heaps: Set of binomial trees which have binomial heap properties.
42. Fibonacci heaps: Collection of min-heap-ordered trees.
43. Unordered binomial tree: Binomial tree with a single node, and an unordered binomial tree consisted of two unordered binomial trees.
44. Disjoint-set operations: Maintenance of  a collection of disjoint dynamic sets.
45. Disjoint-set forests: Set of rooted trees which in each of their nodes contain one member and each of these trees represent one set.
46. Union by rank: Linked-list representation of the weighted-union heuristic.
47. Path compression: simple and effective heuristic without changing any ranks.
48. Union by rank with path compression: Combination of union-by-rank and path-compression heuristic.
49. Off-line minimum problem: Maintenance of a dynamic set of elements from an specific domain.
50. Adjacency-list representation: representation of a graph using adjacent list for each vertex.

List of Common Algorithms – Part 2 >