630 likes | 689 Views
CIS 200 Final Review. New Material. Sorting. Selection Sort. Repeated scan of list for smallest/largest value Each swap with item in correct spot Big O, N-1 Passes Probes – O(N^2) Data Movements – O(N). Insertion Sort. Like cards being one at a time
E N D
Selection Sort • Repeated scan of list for smallest/largest value • Each swap with item in correct spot • Big O, N-1 Passes • Probes – O(N^2) • Data Movements – O(N)
Insertion Sort • Like cards being one at a time • Array is split into 2 logical parts, sorted and unsorted • On each pass, next item from unsorted walks (via swaps) to correct position in sorted portion • Big O, N-1 passes Best, Worst, Ave. cases • Best – O(N) • Worst – O(N^2), T(N) =1/2N^2 – 1/2N • Avg – O(N^2), T(N) = 1/4N^2…
Merge Sort Recursive • Divide list into 2 parts • Sort each part using recursion • Combine the 2 (now sorted) parts into one sorted list Big O • Best, Avg, Worst – O(N log2 N)
Quick Sort • Partition is the key Two approaches • Dr. Wright’s • Text, from E18.10, p. 745 Big O • Worst case is when pivot is extreme value (min or max) • Already sorted list! • O(N^2) • Best/Avg • O(N log2 N) • Really is twice as fast as merge sort on average
Binary Search Tree • How to add items • Show a well-balanced BST – Add in this order: 9, 7, 12, 15, 2 • Show a poorly balanced BST – Add in this order: 2, 7, 9, 12, 15 • How to search • Show Inorder traversal in BST
Traversals • Preorder • Inorder • Postorder http://www.cs.cmu.edu/~adamchik/15-121/lectures/Trees/trees.html
Generics • Generic methods • Generic classes
.NET Collections • Esp. Hash Table • Collisions • Bucket – Linked List • Load Factor
Memory Management • C, C++ - Have to “allocate” memory • Forgetting to “free” results in memory leaks • “Garbage Collector” Rounds up and “reclaims” memory • Variables that drop out of “scope” will be collected • Temporary values inside methods reclaimed on method exit • Generally uncontrolled by the developer
LINQLanguage Integrated Query • Perform Queries Against Objects, Data
LINQ Keywords • “from” - Data Source • “where” – Filters the source elements with Boolean expressions • “select” – Choosing the data type to work with • “group” – Groups results according to a desired key value • “orderby” – Sorts the query results in ascending or descending order based on a comparer • “let” – Introduce a variable for query use • Select new creates anonymous class as result set
Namespaces, Scope Classes, often with common functionality, bundled together • System.Console • System.Collections.Generic • System.Linq Scope • “private” – Can only be accessed by the class, object itself • “protected” – Can only be accessed by the class, object, or any child classes, objects • “public” – Available access for all
Constructors C#, .NET compiler provides a ‘free’ constructor - Default • No parameters • When a new constructor is created, ‘free’ constructor goes away • Constructors can be “connected” with “this”
Interfaces • Object used for creating “interfaces”, common code • Classes “implement” an interface • All methods, properties are “abstract” in an interface • Objects that implement interface can be grouped • List<IPayable> • IPayable, IDisposable, etc
Inheritance • Classes with child or children classes • Can be used to “share” common code properties • Allows for “unique” objects, while reducing code • Object -> Person -> Student • Object -> Person -> Employee
Polymorphism • Override • Virtual • abstract
Inheritance - Keywords • “abstract” – Methods marked MUST be overridden • Class declared with abstract prevents creation with “new” • “virtual” – Methods marked CAN be overridden • Controls “how” other classes inherit information from the class • Private, protected, public – Used to control what is inheritance
Casting • Convert one type to another • Integer to String • Decimal to Integer • Byte to Integer • C#, .NET will know how to “box” and “unbox” types • Decimal -> Object -> Integer • Remember back to the Person – Student relationship • We can “cast” Person to Student both ways
Will cast to student just fine Will compile, But will throw an EXCEPTION at runtime
Exceptions and Exception Handling • Exceptions are… • “Exceptional” events • Unexpected events, errors during runtime • Unhandled exceptions? Stack trace and application death • Handled with try/catch/finally blocks • Try block “attempts” to run the code in question • Catch block handles the exception(s) that may occur • Finally block, optional, always executes
Vs. multiple catches • What order must the catch clauses appear?
Windows Forms, GUI Programming • Elements • Textboxes • Tab Groups • Checkboxes • Fields • Menus • Combobox • Event Handlers • Visual Studio Designer
Event Handlers • “Events” triggered by end user • Button Press • Key Press • Field Entry • …other GUI modifications or events
Role of Delegates in Event Handling • Sender? • E? • Need examples
Files and Streams • Files • Objects on Disks • Streams • Data structure that exposes • Read • Write • Synchronous • Asynchronous
Recursion …a solution strategy that involves a simpler version of the same problem. The problem becomes simplified with each call until we reach a stopping point. Resolution level by level. Useful for • Complex equations (Fibonacci number) • Towers of Hanoi • Binary Searching • Entry point • Stopping point • Deceptively simple
Define a Recursion Method What is my base case? • What is the solution to my base case? What is my intermediate case? • What is the solution to the intermediate case?