Data Structures with Python: Get familiar with the common Data Structures and Algorithms in Python (English Edition)
()
About this ebook
The book starts by introducing you to the fascinating world of data structures and algorithms. This book will help you learn about different algorithmic techniques such as Dynamic programming, Greedy algorithms, and Backtracking, and their applications in solving various computational problems. The book will then teach you how to analyze the complexity of Recursive algorithms. Moving on, the book will help you get familiar with the concept of Linked lists, which is an important foundation for understanding other data structures, such as Stacks and Queues, which are covered in detail later in this book. The book will also teach you about advanced data structures such as Trees and Graphs, their different types, and their applications. Towards the end, the book will teach you how to use various Sorting, Searching Selection and String algorithms.
By the end of the book, you will get a comprehensive and in-depth understanding of various data structures and algorithms and their applications in solving real-world computational problems efficiently.
Related to Data Structures with Python
Related ebooks
Analysis and Design of Algorithms: A Beginner’s Hope Rating: 0 out of 5 stars0 ratingsAdvance Core Python Programming: Begin your Journey to Master the World of Python (English Edition) Rating: 4 out of 5 stars4/5Programming Problems in Ruby Rating: 0 out of 5 stars0 ratingsPython Data Structures and Algorithms Rating: 5 out of 5 stars5/5Python For Data Science Rating: 0 out of 5 stars0 ratingsPython Quick Interview Guide: Top Expert-Led Coding Interview Question Bank for Python Aspirants (English Edition) Rating: 0 out of 5 stars0 ratingsData Structures II Essentials Rating: 0 out of 5 stars0 ratingsData Structures & Algorithms Interview Questions You'll Most Likely Be Asked Rating: 1 out of 5 stars1/5Data Structures and Algorithm Analysis in Java, Third Edition Rating: 4 out of 5 stars4/5Mastering Python Design Patterns Rating: 0 out of 5 stars0 ratingsVisualizing Data Structures Rating: 0 out of 5 stars0 ratingsLearning Functional Data Structures and Algorithms Rating: 0 out of 5 stars0 ratingsPython: Programming for Intermediates: Learn the Fundamentals of Python in 7 Days Rating: 4 out of 5 stars4/5Data Structure in Python: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsPython High Performance - Second Edition Rating: 0 out of 5 stars0 ratingsEssential Algorithms: A Practical Approach to Computer Algorithms Rating: 5 out of 5 stars5/5Java 9 Data Structures and Algorithms Rating: 0 out of 5 stars0 ratingsNumPy Beginner's Guide Rating: 5 out of 5 stars5/5Algorithm Challenges: The Dojo Collection Rating: 0 out of 5 stars0 ratingsPython Internals for Developers: Practice Python 3.x Fundamentals, Including Data Structures, Asymptotic Analysis, and Data Types Rating: 0 out of 5 stars0 ratingsGROKKING ALGORITHMS: Advanced Methods to Learn and Use Grokking Algorithms and Data Structures for Programming Rating: 0 out of 5 stars0 ratingsEssential Algorithms: A Practical Approach to Computer Algorithms Using Python and C# Rating: 5 out of 5 stars5/5Introduction to Algorithms Rating: 0 out of 5 stars0 ratingsPython Data Structures and Algorithms Complete Self-Assessment Guide Rating: 5 out of 5 stars5/5Basic Core Python Programming: A Complete Reference Book to Master Python with Practical Applications (English Edition) Rating: 0 out of 5 stars0 ratingsHashing Rating: 0 out of 5 stars0 ratings
Computers For You
Standard Deviations: Flawed Assumptions, Tortured Data, and Other Ways to Lie with Statistics Rating: 4 out of 5 stars4/5Procreate for Beginners: Introduction to Procreate for Drawing and Illustrating on the iPad Rating: 5 out of 5 stars5/5Learning the Chess Openings Rating: 5 out of 5 stars5/5Alan Turing: The Enigma: The Book That Inspired the Film The Imitation Game - Updated Edition Rating: 4 out of 5 stars4/5Elon Musk Rating: 4 out of 5 stars4/5CompTIA Security+ Get Certified Get Ahead: SY0-701 Study Guide Rating: 5 out of 5 stars5/5Deep Search: How to Explore the Internet More Effectively Rating: 5 out of 5 stars5/5Slenderman: Online Obsession, Mental Illness, and the Violent Crime of Two Midwestern Girls Rating: 4 out of 5 stars4/5Mastering ChatGPT: 21 Prompts Templates for Effortless Writing Rating: 4 out of 5 stars4/5The Hacker Crackdown: Law and Disorder on the Electronic Frontier Rating: 4 out of 5 stars4/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution Rating: 4 out of 5 stars4/5A Brief History of Artificial Intelligence: What It Is, Where We Are, and Where We Are Going Rating: 4 out of 5 stars4/5The ChatGPT Millionaire Handbook: Make Money Online With the Power of AI Technology Rating: 4 out of 5 stars4/5CompTIA IT Fundamentals (ITF+) Study Guide: Exam FC0-U61 Rating: 0 out of 5 stars0 ratingsThe Professional Voiceover Handbook: Voiceover training, #1 Rating: 5 out of 5 stars5/5Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Discord For Dummies Rating: 0 out of 5 stars0 ratingsSome Future Day: How AI Is Going to Change Everything Rating: 0 out of 5 stars0 ratingsHow to Create Cpn Numbers the Right way: A Step by Step Guide to Creating cpn Numbers Legally Rating: 4 out of 5 stars4/5The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms Rating: 0 out of 5 stars0 ratingsData Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5Uncanny Valley: A Memoir Rating: 4 out of 5 stars4/5Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are Rating: 4 out of 5 stars4/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratings
Reviews for Data Structures with Python
0 ratings0 reviews
Book preview
Data Structures with Python - Dr. Harsh Bhasin
CHAPTER 1
Introduction to Data Structures
Richard Buckland from the University of New South Wales often uses the acronym PAPP while teaching Data Structures and Algorithms. Here, the first P stands for the problem, the A stands for the algorithm, the second P for the program, and the third P for the process. An algorithm is the sequence of steps to accomplish the task at hand or solve the problem. The algorithm is then implemented in some programming language, thus, giving rise to a program. When you execute this program, it becomes a process.
You learn languages, say Python, to implement an algorithm;this takes us from the algorithm to the program. You execute this program, thus, creating a process. To understand the transition from a program to a process, you learn the basics of Compiler Design and Operating Systems. In this chapter, you will learn the transition from Algorithm to Program and to some extent, the problem to the algorithm. That is, you will be presented with algorithms related to some data structures, which you will implement. Furthermore, at times, you will be presented with some problems that you need to solve using the implemented data structures. This chapter defines the term data structure and presents a brief overview of the things to come.
The reader is expected to know Python;for that matter, he/she must be versed in at least one programming language. The following discussion will extensively use loops, nested loops, lists, tuples, dictionaries, arrays (both 1-dimensional and 2-dimensional), and the difference between reference types and value types.
Structure
In this chapter, we will cover the following topics:
Define data structures
Define data type
Classify data structures
Learn a way to sort numbers
Objectives
This chapter aims to introduce the fascinating subject of data structures to the readers. The chapter will deal with the basic data types, types of data structures, and a problem related to sorting.
After reading this chapter, the reader will be able to classify data structures and understand why this study is important. The reader will also learn when to use which data structure and what operations can be performed on them. This discussion will act as a foundation stone of the building called data structures.
Introduction
The single value stored in a variable is called a datum. The set of values of a variable is called data. Note that data may contain many values, each of which is referred to as a data item. Each data item can further be divided into sub-items. For example, a variable called name, which stores the name of a student, may have the value Brandon Walsh
. This data item can be divided into two sub-items, Brandon
and Walsh
, which are the first name and the last name, respectively, though some data items like PAN CARD NUMBER cannot be divided into sub-items.
Some of you might have studied Object Oriented Programming and have some basic idea of a Class
, which is a real or a conceptual entity having importance to the problem at hand. An entity has attributes, each of which can be assigned some values and these values may belong to a particular data type. For example, in the following illustration, an entity called Movie has attributes name, year, genre, and so on. The data type of Name is a string, that of Year is an integer, and that of Genre, Director, and Music are strings. The values assigned to these variables are Sairat
, 2016, Don’t talk about it
, Nagraj Manjule
, and Ajay-Atul
respectively.
Movie
Name : Sairat
Year : 2016
Genre : Don’t talk about it
Director : Nagraj Manjule
Music : Ajay-Atul
The set of similar entities constitutes an entity set, which will help us to solve the preceding problem. This takes us toward meaningful data, which can be processed. Here comes information that can be considered as processed organized data. The organization is important, and this subject will teach you how to organize data.
Let us consider a file containing records of movies. Each record contains five fields: Name, Year, Genre, Director, and Music. So, we have a file containing records, and each record contains fields. This is an example of fixed-length records. There are files containing variable-length records as well. In such files, the maximum and minimum length is generally mentioned. The data needs to be organized to facilitate efficient and effective handling of this data. This subject teaches you data structures, which will help you to organize data efficiently and effectively.
Data structures: Data structures include the organization of records into complex structures, the implementation of such structures and the analysis of the amount of memory and time taken by such structures.
Having seen the definition of data structures, let us now move to the definition of data types.
Data types
"The data types constraints values that a variable can take and define operations that can be performed on it." The basic data types such as int, char, and float are also called primitive data types. In older versions of C, for example, an integer is used to take two bytes of memory (16 bits). Out of these, one bit was reserved for the sign of the integer, and the remaining 15 bits were for storing the values. Note that the maximum value can therefore be 2¹⁵ - 1 = 32767 and the minimum value could be -2¹⁵ = -32768. Likewise, in the versions of C, which allot 4 bytes to integers, the maximum value can be 2³¹ - 1 and the minimum can be -2³¹.
The int data type, therefore, constrains a) the types of values that can be stored in an integer type variable b) the range of values that can be stored in such a variable, and c) the organization of memory (as in one bit will store the sign information and the rest binary equivalent of a given number).
The primitive data types are provided by the programming language, such as integer, character, float, Boolean and so on. The amount of memory allocated to each depends on the language and some other factors. For example, an int in C occupies two bytes in Turbo (DOS) and four in Visual Studio.
Most programming languages also allow user-defined data types as well. In Object Oriented Languages, classes provide a way to create user-defined data types. In C, structures can be used to create these.
Let us now have a brief overview of the types of Data Structures. The following section will give you a glimpse of things to come.
Types of data structures
This subject primarily focuses on the organization of data. This organization can be modeled in different ways, each of which is referred to as a data structure. For example, a set of ordered numbers can be placed in a linear array or in a tree-like structure. The first method is easy but may require more time for some operations like insertion and deletion, whereas the second method though slightly complex, will help in easy insertion and deletion.
Any model that you choose must be representative of the relationship between the data members, and the structure should be simple, effective, and efficient. Some of the data structures that will be explored in the following chapters are as follows:
Arrays: An array is one of the simplest data structures. It is homogeneous, and the elements are stored at consecutive memory locations. The elements of the array will be represented by the name of the array followed by square brackets ([ ]) containing the index of the element. Note that the first element is generally placed at index zero, the second at index one, and so on.
Two-dimensional arrays: Two-dimensional arrays are table-like structures containing rows and columns. The elements in these matrix-like structures can be accessed by the name of the array, followed by the two indices depicting the row index and the column index. Generally, in memory, the two-dimensional arrays are stored in the row-major or column-major format, as discussed in Chapter 4, Arrays.
Linked list: The linked list is a data structure in which the units called nodes are linked together. Each of these nodes contains at least two parts normally: (a) the information and (b) the address of the next node. The address of the last node is null/none. We may also have more than one container for the address in each node, like in the case of a doubly linked list. In a doubly linked list, each node contains the address of the previous node, information and that of the next node.
Stacks: Stacks is a linear data structure that follows the principle of Last in first out (LIFO) or First in last out (FILO). So, if you insert 51, 78, 90, and 49 in a stack, the order in which these elements would be removed is 49, 90, 78, and 51 (which is LIFO). Stacks is extremely useful while implementing recursion and in evaluating various types of expressions such as postfix, prefix, and so on.
Queue: Queue is a linear data structure that follows the principle of First in first out (FIFO). So, if you insert 51, 78, 90, and 49 in a queue, the order in which these elements would be removed is 51, 78, 90 and 49 (which is First In First Out). Queues are used in the implementation of scheduling algorithms such as FIFO and so on.
Graph: Graph is a set containing {V, E}, where V is a finite non-empty set of vertices, and E is a finite non-empty set of edges. They are used in almost all facets of Computer Science, such as circuits and systems, networking, and so on.
Trees: Trees generally contain nodes depicting hierarchical relationships. Technically, it is a graph that does not contain a cycle, isolated vertex, or isolated edge(s). Such data structure greatly helps us in searching and even sorting.
The operations that can be performed on each of the data structures are as follows:
Traversal: A traversal defines a way to visit each element of a given data structure. A graph, for example, can be traversed using Depth First Search, Breadth First Search, Level First Search, and so on. A binary tree can be traversed using In-order, Post-order, or Pre-order traversal, and so on.
Insertion: The process of inserting a node in a given data structure is important both in terms of time complexity and memory management. For example, inserting an element at the end of an array takes O(n) time, whereas inserting an element in a stack takes O(1) time.
Deletion: Like in the case of insertion, the deletion of an element is important both in terms of time and space complexity. For example, deleting an element from the end of an array takes O(1) time, whereas deleting an element from the beginning of an array takes O(n) time.
Searching: This is one of the most important operations in data structures. In fact, many data structures are designed so that an item can be efficiently searched from them.
Let us now have a look at one of the most important problems in data structures: Sorting.
Game of clones
Consider the following situation. You have five people (all the same: clones?) with placards having a number written on them. All the cards have different numbers. The five people are assigned numbers indicating their positions, which are from 1 to 5 (figure 1.1). They start playing a game as per the following rules.
Figure 1.1: Five persons holding different placards
Starting from i=1 (till i=4), person i and (i+1) exchange their cards if the number on i’s card is greater than (i+1)’s card. That is, person 1 will exchange the card with person 2 if person 1’s card has a number greater than person 2’s card; then person 2 will exchange the card with person 3 if person 2’s card has a number greater than person 3’s card, person 3 will exchange the card with person 4 if person 3’s card has a number greater than person 4’s card, and finally, person 4 will exchange the card with person 5 if person 4’s card has a number greater than person 5’s card. This way, person 5 will have the card having the greatest number after this step (figure 1.2):
Figure 1.2: At the end of Step 1, person 5 will have the card having the largest number
In the next step, the preceding process is repeated, except for the exchange between persons 4 and 5, as person 5 already has the greatest number. After this, Step 4 will have the second largest number (figure 1.3):
Figure 1.3: At the end of Step 2, person 4 will have the card having the second largest number
In the next step, the preceding process is repeated till all the numbers are sorted (figure 1.4):
Figure 1.4: At the end of Step 3, person 3 will have the card having the third largest number
Note that in the last step, only a single comparison is required (figure 1.5):
Figure 1.5: At the end of Step 4, person 2 will have the card having the fourth largest number
Note that after each step, the largest element of the remaining array is placed at the (i+1)th last position. Here, i varies from 0 to (n–1), n being the number of terms. The complete process results in the sorted array. Note that in the preceding process, the total number of comparisons is 4 + 3 + 2 + 1 = 10. Had there been n numbers, the total of comparisons would have been (n-1) + (n-2)+ … + 1 = (n × (n-1))/2. That is of order n². The process scales very poorly. When the number of elements doubles, the complexity changes by almost four times, provided n is a large number, and all the overheads take a negligible amount of time.
The game of clones revisited
The preceding game was being watched by Phineas Fletcher. He approached the group of people playing the game and suggested a simple change. He suggested selecting the highest number in each step and replacing it with the ith element, i starting from 0. The process is shown in the following figure.
In the figure that follows, the largest number (63) is selected in the first step and swapped with the element at the 0th index. In the next step, the second largest number is selected and swapped with the element at the 1st index. Likewise, in the successive steps, the largest numbers from the remaining array are chosen and swapped with the element at the ith index (figure 1.6). Note that if selecting the largest element from the remaining array takes time, O(log n) the whole process should take time of order O(n log n), which is much better than the previous method of sorting numbers.
Figure 1.6: Another way to sort numbers
The following graph (figure 1.7) shows the variation of n² and (n log n) with n and makes a strong case for the second method of sorting numbers:
Figure 1.7: Variation of nlogn and n² with n
Conclusion
This chapter introduced the reader, the fascinating world of data structures. The chapter defined the term data structure, explained its types, stated the difference between data structures and data types, and presented a problem to explain the importance of time complexity. The reader should get hold of the idea of data structure, its types, and their applications after reading this chapter. This chapter is your first step towards becoming an accomplished programmer.
The next chapter takes the discussion further and introduces algorithms and complexity. The features of an algorithm, the types of algorithms, and asymptotic notations for complexity are discussed in the upcoming chapter.
Multiple choice questions
Which of the following follows the principle of Last In First Out (LIFO)?
Stack
Queue
Linked List
None of above
Which of the following follows the principle of First In First Out (FIFO)?
Stack
Queue
Linked List
None of the above
Which of the following is a linear data structure?
Stacks
Queue
Array
All the above
Which of the following is a non-linear data structure?
Tree
Graph
Plex
All the above
Which of the following data structure is used to evaluate a postfix expression?
Queue
Stacks
Array
None of the above
Which of the following data structure is used to evaluate a prefix expression?
Stacks
Queue
Array
None of the above
Which of the following data structure is used to find the shortest path?
Trees
Graph
Plex
None of the above
Which of the following data structure is used for an efficiently searching an element?
Binary Search Trees
Queue
Stack
None of the above
An integer in Turbo C takes two bytes;what is the maximum value that can be stored in it?
32767
32768
65536
65535
In the preceding question, if it is an unsigned integer, what is the maximum value that can be stored in it?
32767
32768
65536
65535
Theory-based questions
What is a data structure?
Define data type and differentiate between primary and secondary data types?
What are linear and non-linear data structures?
Define Stack and give any two applications of Stacks?
Define Queue and give any two applications of Queues?
Define Trees and give any two applications of Trees?
Define Graph and give any two applications of Graphs?
How will you sort a list of numbers without spending time?
Explain PAPP.
Write a short note on why you should study data structures.
Application-based questions
Harsh keeps track of music videos by saving the following data on his PC:
Name
Singers
Music Director
Album
Year
Duration
Lyricist
What steps would you take if you needed to store the preceding information of all the tracks in a file?
State the data types of all the attributes?
Give reasons for choosing a particular data type for an attribute? For example, explain why you choose a list/an array for the variable singers.
The records need to be stored in a file and accessed by a Python program. Can you suggest a better way of storing the data?
Listening to songs continuously motivated Harsh to keep track of albums as well.
What attributes must he store according to you?
State the data type of each of the attribute?
Can you suggest which attribute will always be unique for a particular record. What is such attribute called?
Can you link the previous question and this question with such unique attribute?
In the preceding two questions, segregate the attributes as variable length attributes and fixed length ones?
Give a brief description of how will you search a record in this file?
Harsh decides to sort the records alphabetically. Based on the techniques introduced in the chapter, can you suggest a method to him?
Consider the following expression: (a + b) - c
Create a tree for the same.
In your organization or University, there must be some hierarchy. For example, the Dean reports to the Vice Chancellor, the HOD (Head of Department) reports to the Dean and the faculty of a department reports to the HOD. Furthermore, each faculty may have a Teaching Assistance (TA).