Mastering critical SKILLS in Data Structures using Python Notes
Data Structure What and Why¶
A Data Structure (DS)¶
- A data-structure Is just a class!
- This means it combines two components
- Organization of data
- operations on the data
- During a Python programming course, you should have already studied many built-in data structures many built-in data structures
- List, Tuple, Set and Dictionary (please review well)
Common Questions¶
Why do we need data structures?¶
- If you have implemented code in a 500+ line project, you have probably met scenarios where you need complex ways to both manage our data, and perform operations on it.
- In a hospital or restaurant system, you need to maintain the queue of people
- Who came first (first in first out principle)
- What their order is
- Other relevant statistics: when was the person served? How much was the bill? etc…
- With just basic int/float/character, we are very constrained!
- Data structures (aka classes), provide such great flexibility!
Why Built-in Data Structures?¶
- Throughout the history of software engineering, certain types of data+operations are common and repetitive
- Some are basic, such as what are now known as the List, Stack, and Queue data structures
- E.g. Aqueue data structure is useful for queues In restaurants and hospitals
- Some are advanced, such as Hash-Table and AVL Trees
- It’s time-consuming and repetitive to re-implement these from scratch
- Many languages implement them: STL in C++, Collections in Java/C#, etc
- During this course, we will learn the inner details of these built-in DS
Why not just use built-in DS?¶
- Using built-in data structures as a black box without understanding their details is a big risk in real projects
- Typically you won’t realize the time/memory order
- Typically you will use them improperly as you don’t recognize their differences
- These built-in data structures were built to serve only common scenarios
- What if we face new scenarios relevant to our project?
- Example: search for a specific word in a 1 billion word article
- List is very slow,
- We can invent new data structures
- For example: Trie or Suffix Tree data structures are much faster!
- Example: Google Maps
Why not just use built-in DS?¶
- What if we face new scenarios relevant to our project?
- We need to create a new data structure to provide flexibility in dealing with something very centered around this data
- A user defined data-type: your own class, which serves a specific purpose
- To be effective, you need several skills!
- E.g. what are the different data organization perspectives that we may use?
- ■ What are the pros/cons of them?
- ■ The time/memory differences?
- ■ The tradeoffs?
- Side effect
- Your thinking skills are improved
- This is good for problem-solving & algorithms courses
Data Organization Perspective¶
- From one purpose to another, we may arrange the same data in different ways
- There are many ways to implement a data structure
- When we have huge amounts of data (think of the billions of users on Facebook), things become much more complex and critical!
- E.g. Search the engines for scientific or social purposes
- E.g. If a storm hits a specific list of locations, how many homes will face a power outage?
- E.g. We are in a war, and want to destroy the minimum number of bridges in a city to disconnect 2 points of our enemy? Rockets are expensive!
Data Structure Efficiency¶
- Assume we have N (10000) employees
- Is a loop over these N employees as fast as 3 nested loops?
- No, it seems like 10000 operations vs 10^12 operations!
- It looks like the first is efficient, but the 2nd is not!
- So how to measure the efficiency of a function?
- The complexity (asymptotic) analysis in the algorithms field answers that.
- The efficiency can be for time and memory (space)
- For the same problem, we may arrange data in a way that is so fast in computations, or we could look for one which is optimal in terms of memory efficiency
- You might be lucky, and find a DS that is both time and memory efficient!
- On mobiles: you may target a memory efficient approach
- On real-time services: you may target a time efficient approach
Normal class vs Data structure¶
- It seems a data structure is simply a class with data and methods!
- Why do we give it a special name? Because of how we perceive it
- Data structure is very centered around data to provide specific functionalities
- It is mainly about the data. Specific functionalities are driven and tailored to the data
- Every data structure arranges & stores data in a specific way to support a specific use case
- Queue data structure orders that data to follow: First in First Out order, like restaurants
- A normal class is centered around functionalities. I want a Student class, in which I can not only store student information and add students, but also assign each student grades, as well as mark and print student assignments
- Employee, Payroll, Question, Answer, Email, etc. All are classes of business logic
- Eventually, both have data + operations, but different views
Array¶
Last update :
August 31, 2023
Created : August 25, 2022
Created : August 25, 2022