2336TopicOutline

advertisement
COSC 2336 Topic Outline
Data Structures & Algorithm Analysis
I. Linear Structures
A. Stack
B. Queue
C. SLL - Single Linked List
D. DLL - Double Linked List
II. Implementation Schemes for Data Structures
A. Language Primitive (Show variations among languages.)
1. Integer
2. Real
3. String (Static, Dynamic, and Hybrid)
4. Set
5. Record, Struct, Heterogeneous Aggregate
6. Array, Homogeneous Aggregate
7. Others, (Stack, List, Logical, Complex, etc.)
B. Programmer Defined
1. Static with Implicit Pointers (Typically using an array.)
2. Dynamic with Explicit Pointers (Typically using dynamic variables.)
3. Static with Explicit Pointers (Typically using an array of structs.)
III. Non-Linear Structures
A. MLL - Multi-Linked List
B. Binary Tree
1. PreOrder, PostOrder, InOrder, and other Traversals
2. Binary Search Tree (BST)
3. Expression Tree
4. Heap
C. M-ary Tree
D. M-ary Tree implemented as a binary tree
E. Height Balanced Binary Search Tree (AVL Tree)
F. B tree, B+ Tree
G. Graphs
1. Directed
2. Undirected
3. Implementations
a. Connectivity Matrix
b. Weighted Connectivity Matrix
c. N union E as an MLL
d. Array-Array and Array-List combinations
e. Effective storage for sparse matrices
IV. Internal Sorting
A. Bubble, Selection, Insertion, etc.
B. BST Sort
C. Heap Sort
D. Quick Sort with variations
E. Bin or Radix Sort
F. Address Calculation Sorting Techniques
G. Merge Sort
H. Shell Sort (if time permits)
V. External Sorting
A. Merging Sorted Files
B. External Merge Sort
VI. Introduction to Algorithm Analysis (Primarily computation time, but
also other resources such as memory in some cases. )
A. Worst Case Analysis - Upper Bound (Big Oh)
B. Best Case Analysis - Lower Bound (Big Omega)
C. Average Case Analysis - Expected Value (Called Big A)
VII. Introduction to File Structures
A. Sequential Files
B. Indexed Files
C. Indexed Sequential Files
D. Inverted Files
VIII. Searching
A. Linear Search
B. Binary Search
C. Binary Search Tree
D. Hashing and Symbol Tables
1. Open or Bucket Hashing
2. Closed Hashing (Linear Quotient)
IX. Algorithmic Styles and Techniques
A. Recursion (Direct and Mutual)
B. Divide and Conquer
C. Greedy Method
D. Exhaustive Search
E. Backtracking
F. Dynamic Programming
G. Two-Opting
X. Specific Examples of Related Problems
A. Parsing simple expressions to produce an expression tree
B. Evaluating postfix expression using a stack
C. Game Trees (Alpha-Beta Pruning)
D. Traveling Salesman Heuristics
E. Graph Algorithms such as Dijkstra’s Algorithm
F. Huffman Algorithm
G. Optimal Binary Search Tree
H. Minimum Spanning Tree.
XI. Notes
1.
2.
3.
4.
5.
6.
7.
The grouping above is logical and does not coincide with the order in which the
material is taught.
The concept of a heap is saved until the heapsort is discussed.
The BST sort is used as a tree example before the bulk of the other sorts are
discussed.
The algorithm analysis material is discussed as needed, primarily during the
discussion of sorting and searching techniques.
As recursion techniques are particularly useful for tree algorithms, recursion is
primarily discussed in conjunction with this topic. Some of the possible
applications of recursion to linear structures are also discussed.
Program assignments are designed so as to require the student to implement data
structures using all three basic implementation schemes.
Program assignments are designed to implement at least: SLL and/or DLL, Stack
and/or Queue, Binary Tree, MLL, Recursion, and Graph.
Download