# Introduction to Algorithms
**Repository Path**: emmix/IntroductionToAlgorithms
## Basic Information
- **Project Name**: Introduction to Algorithms
- **Description**: No description available
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-05-02
- **Last Updated**: 2025-02-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Common
============================================================
>
Introduction to Algorithms
## Contents
[toc]
## What are algorithms?
Informally an alogirthm is a solution to a problem.
## The history of algorithms
Before there were computers, there were algorithms. But now that there are computers, there are even more algorithms, and algorithms lie at the heart of computing.
## Why is the study of algorithms worthwhile?
* Having a solid base of algorithmic knowledge and technique is one characteristic that separates the truly skilled programmers from the novices.
* With modern computing technology, you can accomplish some tasks without knowing much about algorithms, but with a good background in algorithms, you can do much, much more.
* The programming skills and languages let you have a job, the algorithms give you a good job.
* People can't live without faith is. Programmers can't code wihtout the algorithms. The algorithm is the faith of programmers.
## How about the book?
#### The authors are genius
They are [Thomas H. Cormen](https://www.amazon.com/Thomas-H-Cormen/e/B000AQ24AS/ref=dp_byline_cont_pop_ebooks_1), [Charles E. Leiserson](https://www.amazon.com/Charles-E.-Leiserson/e/B000AQ6W9W/ref=ntt_dp_epwbk_2), [Ronald L. Rivest](https://www.amazon.com/Ronald-L.-Rivest/e/B000AQ24MQ/ref=ntt_dp_epwbk_1), and [Cliford Stein](https://www.amazon.com/Clifford-Stein/e/B001K6MOAW/ref=ntt_dp_epwbk_3)
#### The book's contents are awesome

#### The video lectures are exciting

I'd like to say ***Introduction to Algorithms*** is programmers' Bible.
## The Contents of This Book
* [Preface](Preface/Readme.md)
* I Fundations
* [1 The Role of Algorithms in Computing](Ch01.TheRoleOfAlogrithmsInComputing/Readme.md)
* [2 Getting Started](Ch02.GettingStarted/Readme.md)
* 3 Growth of Functions
* 4 Divide-and-Conquer
* 5 Probabilistic Analysis and Randomized Algorithms
* II Soriting and Order Statistics
* 6 Heapsort
* 7 Quicksort
* 8 Sorting in Linear Time
* 9 Medians and Order Statistics
* III Data Structures
* 10 Elementary Data Structures
* 11 Hash Tables
* 12 Binary Search Trees
* 13 Red-black Trees
* 14 Augmenting Data Structures
* IV Advanced Design and Analysis Techniques
* 15 Dynamic Programming
* 16 Gready Algorithms
* 17 Amortized Analysis
* V Advanced Data Structures
* 18 B-Trees
* 19 Fibonacci Heaps
* 20 van Emde Boas Tree
* 21 Data Structures for Disjoint Sets
* VI Graph Algorithms
* Elementary Graph Algorithms
* Minimum Spanning Trees
* Single-Source Shortest Paths
* All-Pairs Shortest Paths
* Maximum Flow
* VII Selected Topics
* Multithreaded Algorithms
* Matrix Operations
* Linear Programming
* Polynomials and the FFT
* Number-Theoretic Algorithms
* String Matching
* Computational Geometry
* NP-Completeness
* Approximation Algorithms
* VIII Appendix: Mathematical Background
* A Summations
* B Sets, Etc.
* C Counting and Probability
* D Matrices
## How to study this leading textbook ?
#### Strategies
* Word by word, sincerely, and repeatedly
* Divide and conquer this classic textbook chapter by chapter
* Success relies on perseverance.
#### Tactics
* Read the textbook word by word
* https://gitee.com/emmix/introductionToAlgorithms/blob/master/common/Introduction_to_Algorithms_3rd_Edition.pdf
* http://mitpress.mit.edu/books/introduction-algorithms-third-edition
* Watch Video Lectures
* https://www.bilibili.com/video/BV1Tb411M7FA?from=search&seid=7451676977698848882
* https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures
* https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2018/lecture-videos
* Implement algorithms in textbook with a formal language
* https://gitee.com/emmix/introductionToAlgorithms
* Optionally do some exercises
* Intro_to_Algo_Selected_Solutions.pdf
* https://walkccc.github.io/CLRS/Chap06/6.1/
* https://ita.skanev.com/index.html
* Read some necessary references ocationally
* http://web.cecs.pdx.edu/~maier/cs584/
All [source code and documents](https://gitee.com/emmix/IntroductionToAlgorithms) are managed via public git repository.
## Tools
We will write the reading notes and the tools will be used are
* python matplotlib
*
## References
1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. The MIT Press, thrid edition, 2009
2. https://www.amazon.com/gp/product/0262033844/ref=dbs_a_def_rwt_bibl_vppi_i0