The aim of this project is to let a high school student to get the basic knowledge of programming. Python is the best language for a starter to learn how to do programming.
The search and sorting algorithms are the most important algorithms in the computer science world. Even for engineers who have been worked for years, they would be asked to implement the search and sorting algorithms on the whiteboard in a limited time.
- Learn the basic concepts of programming, such as variable, if-else, loop, input and output, recursive function.
- Learn the basic data structures in Python, such as list, dict and tuple.
- Learn the search algorithms (linear search and binary search), learn the sorting algorithms (bubble sort, mearge sort and quick sort).
- Learn Python decorater, use timeit decorater to profile the function execution time.
- Get the notion of algorithm complexity.
- Write a function to find an element in an array, e.g., given an array [1 ,2 ,3, 4, 5], we want to find 4, then return the index of 4, which should be 3 (In the computer world, the indexs are always counted from 0).
- Optimize the algorithm, to implement the binary search algorithm.
- Output the efficiency on the screen, tell the time it spends to do linear search and binary search.
- Learn how to write a recursive function (Please search the Fibonacci problem in Python, and think about is there any better way to solve the Fibonacci problem more quickly?)
- Learn about 3 sorting algorithms, bubble, quick and merge sort, and implement them.
- Use python decorater to profile the sorting functions.
- https://www.jetbrains.com/pycharm/download/#section=mac
- https://wiki.python.org/moin/BeginnersGuide/Overview
- https://wiki.python.org/moin/SimplePrograms
- https://www.youtube.com/playlist?list=PLboXykqtm8dy_DNg1NZiS08Dnyj35PWXw
- https://stackoverflow.com/questions/700241/what-is-the-difference-between-linear-search-and-binary-search
- https://docs.python.org/3/library/timeit.html
- https://brew.sh
- Please search for sorting algorithm, recursive function, Python profier, etc.