BCSC 1204 - Lecture 1
BCSC 1204 - Lecture 1
Data structures are the building blocks of any program or the software. Choosing the appropriate data
structure for a program is the most difficult task for a programmer. Following terminology is used as far
as data structures are concerned
Data: Data can be defined as an elementary value or the collection of values, for example,
student's name and its id are the data about the student.
Group Items: Data items which have subordinate data items are called Group item, for example,
name of a student can have first name and the last name.
Record: Record can be defined as the collection of various data items, for example, if we talk
about the student entity, then its name, address, course and marks can be grouped together to
form the record for the student.
File: A File is a collection of various records of one type of entity, for example, if there are 60
employees in the class, then there will be 20 records in the related file where each record
contains the data about each employee.
Attribute and Entity: An entity represents the class of certain objects. it contains various
attributes. Each attribute represents the particular property of that entity.
Field: Field is a single elementary unit of information representing the attribute of an entity.
As applications are getting complex and amount of data is increasing day by day, there may arise
the following problems:
Processor speed: To handle very large amount of data, high speed processing is required, but
as the data is growing day by day to the billions of files per entity, processor may fail to deal
with that much amount of data.
Data Search: Consider an inventory size of 106 items in a store, If our application needs to
search for a particular item, it needs to traverse 106 items every time, results in slowing
down the search process.
Multiple requests: If thousands of users are searching the data simultaneously on a web
server, then there are the chances that a very large server can be failed during that process
in order to solve the above problems, data structures are used.
Data is organized to form a data structure in such a way that all items are not required to be
searched and required data can be searched instantly.
Efficiency: Efficiency of a program depends upon the choice of data structures. For example:
suppose, we have some data and we need to perform the search for a particular record. In
that case, if we organize our data in an array, we will have to search sequentially element by
element. hence, using array may not be very efficient here. There are better data structures
which can make the search process efficient like ordered array, binary search tree or hash
tables.
Reusability: Data structures are reusable, i.e. once we have implemented a particular data
structure, we can use it at any other place. Implementation of data structures can be
compiled into libraries which can be used by different clients.
Abstraction: Data structure is specified by the ADT which provides a level of abstraction. The
client program uses the data structure through interface only, without getting into the
implementation details.
Traversing: Every data structure contains the set of data elements. Traversing the data structure means
visiting each element of the data structure in order to perform some specific operation like searching or
sorting.
Example: If we need to calculate the average of the marks obtained by a student in 6 different subject,
we need to traverse the complete array of marks and calculate the total sum, then we will divide
that sum by the number of subjects i.e. 6, in order to find the average.
Insertion: Insertion can be defined as the process of adding the elements to the data structure at any
location. If the size of data structure is n then we can only insert n-1 data elements into it.
Deletion: The process of removing an element from the data structure is called Deletion. We can delete an
element from the data structure at any random location. If we try to delete an element from an empty data
structure then underflow occurs.
Searching: The process of finding the location of an element within the data structure is called Searching.
There are two algorithms to perform searching, Linear Search and Binary Search. We will discuss each one of
them later in this tutorial.
Sorting: The process of arranging the data structure in a specific order is known as Sorting. There are many
algorithms that can be used to perform sorting, for example, insertion sort, selection sort, bubble sort, etc.
Merging: When two lists List A and List B of size M and N respectively, of similar type of elements, clubbed or
joined to produce the third list, List C of size (M+N), then this process is called merging
An algorithm is a procedure having well defined steps for solving a particular problem. Algorithm
is finite set of logic or instructions, written in order for accomplish the certain predefined task. It
is not the complete program or code, it is just a solution (logic) of a problem, which can be
represented either as an informal description using a Flowchart or Pseudo code.
The major categories of algorithms are given below:
Sort: Algorithm developed for sorting the items in certain order.
Search: Algorithm developed for searching the items inside a data structure.
Delete: Algorithm developed for deleting the existing element from the data structure.
Insert: Algorithm developed for inserting an item inside a data structure.
Update: Algorithm developed for updating the existing element inside a data structure.
The commonly used asymptotic notations used for calculating the running time complexity of an
algorithm is given below:
Big oh Notation (Ο)
Omega Notation (Ω)
Theta Notation (θ)
It is the formal way to express the upper boundary of an algorithm running time.
It measures the worst case of time complexity or the longest amount of time, algorithm
takes to complete their operation. It is represented as shown below:
It is the formal way to express both the upper bound and lower bound of an algorithm
running time.
Consider the running time of an algorithm is θ (n), if at once (n) gets large enough the
running time is at most k2-n and at least k1 ?n for some constants k1 and k2. It is
represented as shown below:
constant - f(1)
linear - f(n)
logarithmic - f(log n)
n log n - f(n log n)
2
exponential - f(n)
3
cubic - f(n )
n
polynomial - f(1)
2
quadratic - f(n )
A structure is a composite data type that defines a grouped list of variables that are to be placed
under one name in a block of memory. It allows different variables to be accessed by using a single
pointer to the structure.
Syntax
struct structure_name
{
data_type member1;
data_type member2;
.
.
data_type memeber;
};
BCSC 1204 - DATA STRUCTURE & ALGORITHMS
Advantages