What is Data Structures? - East Tennessee State University
Download
Report
Transcript What is Data Structures? - East Tennessee State University
What is “Data Structures”?
What will I learn in this course?
Major Topic Groups
C# Language and .NET concepts
.NET Class Library
Data Structures
Algorithms
Algorithm Analysis
What is "Data Structures"?
2
C# and .NET
C# is similar to both Java and C++ in many ways
The syntax is nearly identical
If you know Java, you can probably read and understand
simple C# programs with little training
Major differences between programming in C# and
programming in Java are the class libraries that are provided
.NET class library provides support for C# (and other .NET languages
such as Visual Basic, F#, IronPython, and even C++.NET)
Java is supported by AWT, Swing and other libraries in addition to the
standard Java API libraries
What is "Data Structures"?
3
Why Learn C#?
Most large companies in the area that hire our CS
graduates do some or all of their software development
in C#
Nine of 11 companies represented in our advisory
board want graduates to know C#
What is "Data Structures"?
4
What Are Data Structures?
A data structure is a container for holding data
Usually think of a data structure as holding multiple data items
An array is an example of this type of data structure
A Java ArrayList <T> is another example of a data structure
We may sometimes think of single objects as being data
structures
A string holds one string of characters that may be manipulated as a
whole (input the string, output the string, compare the string, and so forth)
A string may also be thought of as a collection of individual characters (or
words) that we want to manipulate individually for some task
An object of almost any class may be thought of as a container for the
data represented by the object’s attributes
What is "Data Structures"?
5
Organization of the Data
There are many different ways in which individual data
items in a data structure may be organized
Stored in contiguous memory locations (e.g., an array)
Stored in non-contiguous (possibly random) memory locations
(e.g., a linked list)
Stored externally in a file or data base on a hard drive or “in
the cloud”
What is "Data Structures"?
6
Organization of the Data
A data structure may be organized to facilitate specific
types of usage
Stored in first-come, first-served manner (a waiting line or queue)
Stored in last-in, first out manner (stack)
Stored in order of priority (priority-queue)
Stored in sorted order
Organized for efficient storage and retrieval or for efficient access to
particular items
Organized for minimal memory usage
Organized for fastest access
What is "Data Structures"?
7
Data Structures
Each type of data structure has its own unique
characteristics
There are trade-offs in deciding which data structure to
use
Memory requirements
Efficiency (speed) of storing, finding, retrieving, or processing the
data
Ease of
Understanding
Programming
Testing/debugging/maintenance
Trade-offs: A fast algorithm on a given data structure may require
more memory and be more difficult to understand, but a slower
algorithm may take less memory and be easier to maintain
What is "Data Structures"?
8
Organization
We may have many questions to answer such as
Do we need to access the data randomly (access any item
without accessing all those before it, for example) or is
sequential access sufficient for our needs?
Does the data need to be in a specific order such as sorted
by value, arranged by time (such as people waiting to buy a
ticket to a movie), arranged by priority (the emergency room
has to deal with someone bleeding profusely ahead of
someone with a cold even if the person with the cold has
been waiting longer), and so forth?
The organization of the data and the efficiency with which
we can store/find/retrieve/process items becomes more
important as the amount of data gets large (it takes a lot
longer to sort 1,000,000 items than it does to sort 3 items)
What is "Data Structures"?
9
Algorithms
For a given data structure, we may need to do
certain types of common activities such as
Add data to the data structure
Retrieve data from the data structure
Find a particular data item or items in the data structure
Rearrange (sort) the data into some order meaningful for
a particular task
What is "Data Structures"?
10
Algorithms
For a data structure to be useful, it must be
accompanied by implementations of the algorithms
that allow one to manipulate the data in the desired
ways
Not all data structures are created equal
There is no “best” data structure for all situations
Some are more efficient for specific tasks than others are but
the latter group may be more efficient for a different set of
tasks
One must choose the appropriate data structure for a given
task
What is "Data Structures"?
11
Algorithm Analysis and Selection
There may be many different algorithms that can be
used to accomplish a specific task on a particular data
structure
One must be able to analyze the different algorithms and
choose one that is reasonably efficient for a given task
For example, there are many different sorting algorithms; how
should we choose one that works efficiently for our data
What is "Data Structures"?
12
Algorithm Limitations
Some algorithms do not make sense for a
particular type of data structure, and, thus, no
attempt to use them with that type of data
structure should be attempted
For example, what does it mean to sort a linked list of
colored pixels (does a turquoise pixel come before or
after a puce pixel, for example)?
A queue is organized by the arrival time of the items it
contains – sorting a queue by (say) employee name
would destroy the ordering required by the queue – it
would no longer be a queue
What is "Data Structures"?
13
Choosing an Algorithm
A better choice of algorithms might be made if one
knows something about the data involved
For example, one type of sorting algorithm may be more
efficient if the data is already “close” to being in order while
another algorithm may be more efficient on totally random
data
One may search for a value in an array much more
efficiently if one knows the data is sorted than if the order
of the data is unknown
What is "Data Structures"?
14
Class Libraries
There are many class libraries that contain good
implementations of certain data structures and the
algorithms that support it
A library may have a class that implements a LinkedList, another
class that implements a Queue, another for a Stack, and so forth
The implementations may also contain many useful methods
(algorithms)
In this course, where possible, we will learn to use data
structures implemented in the .NET class library
Some data structures are not be implemented in the
.NET library, and we will have to build our own including
the algorithms for inserting, finding, and retrieving items
What is "Data Structures"?
15
What Will We Do?
Learn to write programs in C#, using the .NET class library
Learn about different types of data structures
The organization of the data in the data structure
When using each type is appropriate
Select an appropriate data structure for a given task
Introduction to elementary algorithm analysis techniques
Analyze algorithms to determine characteristics such as memory efficiency,
execution efficiency, ease of programming including understanding, coding,
and maintenance
Select an algorithm that is appropriate to the task and reasonably efficient
Learn about the trade-offs involved in making intelligent
decisions concerning data structures and algorithms
What is "Data Structures"?
17