Data Structures 1

Download Report

Transcript Data Structures 1

Instructor: Dr. Sahar Shabanah
Fall 2010
Lectures
 ST, 9:30 pm-11:00 pm
 Text book:
 M. T. Goodrich and R. Tamassia, “Data Structures and Algorithms in
Java”, 4th Edition, 2005, Wiley, ISBN: 978-0471738848
 Lecture slides will be posted on the course page before each
lecture.
 Read thru the lecture notes and the assigned readings before
class.
 Be prepared to ask questions.
 Class website:
http://groups.yahoo.com/group/CPCS204_F10/
Grading
 20% Lab & Assignments
 20% Mid-Term Exam
 20% Final Project
 40% Final exam
Course Content
 Object Oriented Design
 Arrays & Linked Lists
 Analysis tools
 Stacks & Queues
 Lists
 Trees
 Heaps
 Maps & Tables
 Sorting & Searching Algorithms
Data Structures
 A data structure in computer science is a way of
storing data to be used efficiently.
 A data structure is a representation of a finite data
set [2].
 Data Structures examples are Array, List, Linked
list, Doubly linked list, Stack, Queue, Hash table,
Graph, Heap, Tree, Binary Search tree, Red-Black
tree, etc
Data Structure Basic Operations
 Queries operations
 get information about the data structure.
 Search (data structure, key):

searches for a given key in a data structure.
 Sort (data structure):

sorts elements of a data structure.
 Minimum(datastructure):

finds the element with the minimum value in a data
structure.
Data Structure Basic Operations
 Maximum (data structure):
 finds the element with the maximum value in a data
structure.
 Successor (data structure, element):
 finds the element that succeeds the given element in a
data structure.
 Predecessor (data structure, element):

finds the element that precedes the given element in a
data structure.
Data Structures Basic Operations
 Modifying operations:
 Change the status of a data structure.
 Insert (data structure, element):


inserts an element into a data structure.
Delete (data structure, element):
 deletes an element from a data structure.
Algorithms
 An algorithm is a sequence of
computational steps that transform the
input into the output .
 Algorithms can be classified according to
the problem-solving approach that they use
or the problems that they solve.
Algorithms with similar problemsolving approach
 Recursive Algorithms: convert the problem into
sub-problems, then solve each one using
recursion.
 Backtracking Algorithms: return a solution if
found or recur through the problem with every
possible choice until solution or failure is reached.
 Brute Force Algorithms: try all possibilities until a
satisfactory solution is found.
Algorithms with similar problemsolving approach
 Divide and Conquer Algorithms: divide the problem
into smaller sub-problems of the same type, and solve
these sub-problems recursively, then combine the
solutions to the sub-problems into a solution to the
original problem.
 Dynamic Programming Algorithms: find the best
solution of multiple exist solutions. Examples are
Knapsack and Activity Selection Problem. Brute Force
Algorithms: try all possibilities until a satisfactory
solution is found.
Algorithms with similar problemsolving approach
 Greedy Algorithms: get the best solution at the
moment, without regard for future consequences. By
choosing a local optimum at each step, it will end up at
a global optimum. Examples are Prim’s and Dijkstra’s
algorithms.
 Branch and Bound Algorithms: a tree of sub-problems
is formed.
 Randomized Algorithms: use a random number at
least once during the computation to make a decision.
Algorithms solve similar problems
 Sorting Algorithms: Bubble Sort, Selection Sort,
Insertion Sort, Shell Sort, Merge Sort, Heap Sort,
Quick Sort, Bucket Sort, etc.
 Linear-Time Sorting: Counting Sort, Radix Sort,
Bucket Sort, etc.
 Graph Algorithms: Breadth First Search (Bfs), Depth
First Search (Dfs), Topological Sort, Strongly
Connected Components, Generic Minimum Spanning
Tree, Kruskal’S, Prim’S, Sin- gle Source Shortest Path,
Dijkstra’S, etc.
Algorithms solve similar problems
 Searching Algorithms:
 List Search: Linear Search, Binary Search, etc.
 Tree Search: Breadth First Search, Depth First Search,
etc.
 Informed Search: Best-First Search, A*, etc.
 String Matching: Naïve String Matching, Knuth-
Morris-Pratt, Boyer-Moore, etc.
Java Programming Basics
 Base Types:
 Objects
 Enum Types
 Methods
 Expressions
 Control flow
 Arrays
 Simple Input and Output
Object-Oriented Design
 Intro
 Inheritance
 Polymorphism
 Exceptions
 Interfaces and abstract Classes
 Casting
 Generics