Purpose of this Article:
To give a broad knowledge of what are computer algortihms and give helpful resources to anyone who wants to get started.
What are Algorithms:
Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, will proceed through a finite number of well-defined successive states, eventually producing "output" and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.
Each algorithm has advantages and disadvantages in different situations. Sorting is one place where a lot of research has been done, because computers spend a lot of time sorting lists. Here are five different algorithms that are used in sorting:
If you have a million integer values between 1 and 10 and you need to sort them, the bin sort is the right algorithm to use. If you have a million book titles, the quicksort might be the best algorithm. By knowing the strengths and weaknesses of the different algorithms, you pick the best one for the task at hand.
Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, programming languages or control tables (processed by interpreters). Natural language expressions of algorithms tend to be verbose and ambiguous, and are rarely used for complex or technical algorithms. Pseudocode, flowcharts and control tables are structured ways to express algorithms that avoid many of the ambiguities common in natural language statements. Programming languages are primarily intended for expressing algorithms in a form that can be executed by a computer, but are often used as a way to define or document algorithms.
- Lafore, Data Structures and Algorithms in Java: http://www.amazon.com/Dat
- Harris & Ross, Beginning Algorithms: http://www.amazon.com/Beg
- Schaum's Outline of Data Structures with C++: http://www.amazon.com/Sch
- Sedgewick's Algorithms in C: http://www.amazon.com/Alg
- Dasgupta, Papadimitriou & Vazirani, Algorithms: http://www.cs.berkeley.ed
- Skiena, The Algorithm Design Manual: http://www.amazon.com/Alg
- Heineman, Algorithms in a Nutshell: http://www.amazon.com/Alg
- Knuth: http://www.amazon.com/s/r
ef=nb_s... (just kidding)
- Samet, Foundations of Multidimensional and Metric Data Structures, ISBN 0123694469 ,http://www.amazon.com/Fo
Other helpful resources to check out:
- Bentley, Programming Pearls: http://www.amazon.com/Pro
's Clever Algorithms in Ruby:
- Advanced CS Courses: http://the-paper-trail.or
You may like to read: