Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
19 views

Data Structures and Algorithm Lec 1

This document provides an overview of data structures and algorithms. It defines data structures as ways to organize and store data to facilitate access and modifications. Key linear data structures discussed include arrays, linked lists, stacks, and queues. Non-linear structures include trees, graphs, and hash tables. The document also defines algorithms as unambiguous step-by-step instructions to solve problems within a finite time, and discusses why studying algorithms is important for program efficiency.

Uploaded by

Naeem Atif
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

Data Structures and Algorithm Lec 1

This document provides an overview of data structures and algorithms. It defines data structures as ways to organize and store data to facilitate access and modifications. Key linear data structures discussed include arrays, linked lists, stacks, and queues. Non-linear structures include trees, graphs, and hash tables. The document also defines algorithms as unambiguous step-by-step instructions to solve problems within a finite time, and discusses why studying algorithms is important for program efficiency.

Uploaded by

Naeem Atif
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 35

DATA STRUCTURES AND ALGORITHM

Dr. Muhammad Idrees


1
01
1
1 0
2 1 0
3 .0
4 10
5 Q 1 0
6 01 0
7 3
8 01 0
1 0.
1 Qq.
2 qQq
3 1 A1z
Books to Follow
2

 D.S.Malik, “Data Structures using C++”


 D.Samanta, “Classic Data Structures”, Prentice
Hall
 Tenenbaum, M.Augenstein, and Y. Langman, “Data
Structures using C and C++”, Prentice Hall.
Some General Comments
3

 Encouragement to ask questions during class


 Without your feedback, it is impossible for me to

know what you don’t know?


 There is no reason not to ask questions during class
 Of course, you could also send email.

 Encouragement to read course material prior to class


 Kindly switch off your Mobile Phones during class
4 Introduction to Data Structure
A data structure is a particular way of storing and
organizing data in a computer so that it can be
used efficiently
Need for Data Structures
 Data structures organize data  more
efficient programs.
 More powerful computers  more
complex applications.
 More complex applications demand
more calculations.
Organizing Data
 Any organization for a collection of
records that can be searched,
processed in any order, or modified.
 The choice of data structure and
algorithm can make the difference
between a program running in a few
seconds or many days.
What is Data Structure?
7

 Data structure is a representation of data and the


operations allowed on that data.
 A data structure is a way to store and organize data
in order to facilitate the access and modifications.
 Data Structure is the method of representing of
logical relationships between individual data
elements related to the solution of a given problem.
Fundamental Data Structures
8

Basic Data Structures

Linear Data Non-Linear Data Structures


Structures

Arrays Linked Stack Queues Graphs Trees Hash Tables


Lists s
array

Linked list

queue
tree stack
Linear Data Structures
10

 A data structure is said to be linear if its elements


form a sequence or a linear list.
 Examples:
 Arrays
 Linked Lists
 Stacks
 Queues
Non-Linear Data Structures
11

 A data structure is said to be non-linear if its


elements does not form a sequence or a linear list.
 Examples:
 Trees
 Graphs
 Hash Tables
 Each element may be connected with two or more
other nodes or items in a non-linear arrangement.
Operations on Data Structures
12

 Traversal: Travel through the data structure


 Search: Traversal through the data structure for a given
element
 Insertion: Adding new elements to the data structure
 Deletion: Removing an element from the data structure
 Sorting: Arranging the elements in some type of order
 Merging: Combining two similar data structures into
one
13 Linear Data Structures
 Arrays
 Linked List
 Stacks
 Queues
Arrays
14

 A sequence of n items of the same data type that are


stored contiguously in computer memory and made
accessible by specifying a value of the array’s index.
 Properties:
 fixed length (need preliminary reservation of memory)
 contiguous memory locations
 direct access
 Insert/delete

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
1 2 3 4 5 6 7 8 9 10

Array a with 10 integer elements


Linked List
15

 A sequence of zero or more nodes each containing two kinds of


information: some data and one or more links called pointers to
other nodes of the linked list.
 Properties
 dynamic length
 arbitrary memory locations
 access by following links
 Insert/delete
 Types of Linked List
 Singly linked list (next pointer)

 Doubly linked list (next + previous pointers)


Stacks
16

 A stack is a data structure that uses last-in, first-out


(LIFO) ordering and allows reading and writing on
the top element only.
 Properties
 insertion/deletion can be done only at the top
 LIFO
 Two operations
 Push (insertion)
 Pop (removal)
Queues
17

 Collection with access only to the item that has been


present the longest
 Properties
 Insertion/enqueue from the rear (back) and deletion/
dequeue from the front.
 FIFO
 Two operations
 Enqueue
 Dequeue

Front 20 30 10 60 57 29 Back
18 Non-Linear Data Structures
 Graphs
 Trees
 Hash Tables
Graphs
19

 Formal definition: A graph G = <V, E> is defined by a


pair of two sets: a finite set V of items called vertices and a set
E of vertex pairs called edges.
 Undirected and directed graphs (digraphs).
 Complete, dense, and sparse graphs

Undirected Graph Directed Graph


Trees
20

 A Tree is a way of representing the


hierarchical nature of a structure in a
graphical form.
 Properties of trees
 Root Node
 Child Node
 Parent Node Ordered Tree
 Leaf Node
 Types
 Unordered Tree
 Binary Tree is an ordered tree data
structure in which each node has at most
two children.
Binary Tree
Hash Tables
21

 A hash table is a data structure that uses a hash


function to map identifying values, known as keys
(e.g., a person's name), to their associated values.
Summary
22

 A data structure is a particular way of storing and organizing


data in a computer so that it can be used efficiently.
 Linear Data Structures
 Arrays
 Linked List
 Stacks
 Queues
 Non Linear Data Structures
 Graphs
 Trees
 Hash Tables
Selecting a Data
Structure
Select a data structure as follows:
1. Analyze the problem to determine
the resource constraints a solution
must meet.
2. Determine the basic operations that
must be supported. Quantify the
resource constraints for each
operation.
3. Select the data structure that best
meets these requirements.
Data Structure Philosophy
 Each data structure has costs and
benefits.
 Rarely is one data structure better
than another in all situations.
 A data structure requires:
 space for each data item it stores,
 time to perform each basic operation,
 programming effort.
25 Introduction to Algorithms
A precise rule (or set of rules) specifying
how to solve some problem.
What is an Algorithm?
26

 An algorithm is a sequence of unambiguous


instructions for solving a problem, i.e., for
obtaining a required output for any legitimate input
in a finite amount of time.
 Properties
 Can be represented various forms
 Unambiguity/clearness
 Effectiveness
 Finiteness/termination
 Correctness
What is an Algorithm?
27

 Recipe, process, method, technique, procedure, routine,


… with the following requirements:
1. Finiteness
 terminates after a finite number of steps
2. Definiteness
 rigorously and unambiguously specified
3. Clearly specified input
 valid inputs are clearly specified
4. Clearly specified/expected output
 can be proved to produce the correct output given a valid input
5. Effectiveness
 steps are sufficiently simple and basic
Why Study Algorithms?
28

 Algorithms solve problems


 Good choice: more efficient programs
 Bad choice: poor programs performance
 Example:
 Problem: Find the largest element ‘k’ out of ‘N’ integers
 Easy algorithms: sort all integers, then list the first or last
element
 Better algorithm: take first element then read through the list

 Different algorithms perform better on different inputs


 Input size also affect the performance.
Notion of Algorithm and Problem
29

Problem

Algorithm

Input “Computer” Output


Representation of an Algorithms
30

 An algorithm may be represented in different


forms:
 A description using English/other languages
 A real computer program, e.g. C++ or java
 A pseudo-code, C-like program, program-language-
like program.

 Program = algorithms + data structures


Basic Issues Related to Algorithms
31

 How to design algorithms

 How to express algorithms

 Proving correctness

 Efficiency (or complexity) analysis


 Theoretical analysis

 Empirical analysis

 Optimality
Analysis of Algorithms
32

 How good is the algorithm?


 Correctness
 Time efficiency
 Space efficiency
Algorithm Efficiency
33

 There are often many algorithms for a given


problem. How do we choose the best?
 Goals of program design:
 Algorithm is to be easy to understand, code, debug
 Algorithm makes efficient use of computer’s resources
 How to measure the efficiency?
 Empirical comparison (run the program)
 Asymptotic algorithm analysis (without running the
program)
 Factors affecting running time (size of the input)
Best, Worst and Average Cases
34

 Not all inputs of a given size take the same time.


 Each algorithm has three cases:
 Best case:
 Worst Case:
 Average Case:
Example: Best, Worst and Average Cases
35

 Sequential search for ‘k’ in an array of ‘n’ integers:


 Best case: ‘k’ is the first element of the array.
 Worst case: the search must visit every element once.
This happens when the value being searched for is
either the last element in the list, or is not in the list
 Average case: on average, assuming the value searched
for is in the list and each list element is equally likely
to be the value searched for, the search visits only n/2
elements.

You might also like