This repo is a collection of common data structures, and alogirthims you might encounter in an interview. This repo covers the following topics:
- Binary Search Trees
- Linked Lists
- Search/Traversing Algorithms
- Breadth First Search
- Depth First Search
- Stack/Queues
- Graphs
- Trees
- Sorting Algorithms
- Bubble Sort
- Insertion Sort
- Merge Sort
- Quick Sort (duh)
- Selection Sort
An algorithm is a self-contained step-by-step set of operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.
"Elegant" (compact) programs, "good" (fast) programs : The notion of "simplicity and elegance" appears informally in Knuth and precisely in Chaitin:
Knuth: ". . .we want good algorithms in some loosely defined aesthetic sense. One criterion . . . is the length of time taken to perform the algorithm . . .. Other criteria are adaptability of the algorithm to computers, its simplicity and elegance, etc"
Chaitin: " . . . a program is 'elegant,' by which I mean that it's the smallest possible program for producing the output that it does"
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D