110 likes | 213 Views
Intro. to Data Structures. - Roughly based on Chapter 6. What?. A data structure is a representation of data and the operations allowed on that data . An object in OOP?
E N D
Intro. to Data Structures - Roughly based on Chapter 6 CSCI 3333 Data Structures
What? • A data structure is a representation of data and the operations allowed on that data. • An object in OOP? • ADT (abstract data type): a data structure that is defined indirectly by the operations that may be performed on it, and the mathematical properties of those operations. • Example data structures: • Arrays • Stacks • Queues • Linked lists • Trees • Graphs • … • Q: What do we have without data structures? CSCI 3333 Data Structures
Why? • Data structures provide various abstractions (structures and operations) and can therefore be used for computer applications that benefit from such abstractions. • A data structure is used along with algorithms to achieve efficiency. • Good performance (aka. efficiency) of a computer application depends on well-designed data structures and their related algorithms. • For example: exhaustive search vs binary search on arrays CSCI 3333 Data Structures
When do we use a data structure? • Whenever its use is justified in a program, usually depending on the requirements and constraints. Where do we use a data structure? CSCI 3333 Data Structures
How are data structures supported in a programming languages ? • As built-in features of the language • Arrays are supported by most high-level languages • Linked lists in some • Hash tables (or associated arrays) in some • Records • ADTs • Classes in OOP • As features defined in libraries or packages CSCI 3333 Data Structures
How do we learn to use data structures? • Understand the fundamental features of various data structures – the structure, the operations • Learn how to evaluate the efficiency of a data structure and related algorithms. • Evaluate different implementations of the same data structure for their respective performance. • Apply the learned knowledge in programming projects. • Practice! Practice! CSCI 3333 Data Structures
Common operations in a data structure CSCI 3333 Data Structures
An example StringArrayList Q: data? Q: operations ? Dynamic array expansion Q: anything missing ? CSCI 3333 Data Structures
The iterator pattern • A common technique used in accessing an aggregate object such as arrays • e.g., printing all items in array v for (int i=0; i < v.length; i++) { System.out.println ( v[i] ); } • Exercises: Assuming v is an integer array, define the following as a method. • Add all the items in v and return the sum. • Reverse the values in v. • Expand the capacity of v by doubling it. CSCI 3333 Data Structures
The static search problem (Sec. 5.6) • Given an integer X and an array A, return the position of X in A or an indication that it is not present. If X occurs more than once, return any occurrence. The array A is never altered. • Many applications: looking up a person, a book, a product, … • Different solutions (algorithms) exist. • Sequential search • Binary search • … CSCI 3333 Data Structures
Evaluation of different algorithms • For each of the algorithms: • Any prerequisites? • Cost of unsuccessful search • Worst case scenario for successful search • Best case scenario for successful search • Average case scenario • Contexts of comparison? • Elapsed time only (assuming the whole array is in memory) • Memory use? • Disk access? • Network latency? CSCI 3333 Data Structures