CS350-CH01 - Data Structures and Algorithms
CS350-CH01 - Data Structures and Algorithms
In a general sense, any data representation is a data structure. Example: An integer More typically, a data structure is meant to be an organization for a collection of data items.
Organizing Data
Any organization for a collection of records 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.
Efficiency
A solution is said to be efficient if it solves the problem within its resource constraints.
Space Time
The cost of a solution is the amount of resources that the solution consumes.
A data structure requires a certain amount of: space for each data item it stores time to perform a single basic operation programming effort.
Open accounts (far less often than access) Close accounts (far less often than access) Access account to Add money Access account to Withdraw money
Teller and ATM transactions are expected to take little time. Opening or closing an account can take much longer (perhaps up to an hour).
When considering the choice of data structure to use in the database system that manages the accounts, we are looking for a data structure that:
Is inefficient for deletion Highly efficient for search Moderately efficient for insertion
One data structure that meets these requirements is the hash table (chapter 9). Records are accessible by account number (called an exact-match query) Hash tables allow for extremely fast exact-match search. Hash tables also support efficient insertion of new records. Deletions can also be supported efficiently (but too many deletions lead to some degradation in performance requiring the hash table to be reorganized).
10
Database system for cities and towns. Users find information about a particular place by name (exact-match query) Users also find all places that match a particular value (or range of values), such as location or population size (called a range query).
11
The database must answer queries quickly enough to satisfy the patience of a typical user. For an exact-match query, a few seconds is satisfactory For a range queries, the entire operation may be allowed to take longer, perhaps on the order of a minute.
12
The hash table is inappropriate for implementing the city database because:
If the database is created once and then never changed, a simple linear index would be more appropriate.
13
Are all data inserted into the data structure at the beginning, or are insertions intersparsed with other operations? Can data be deleted? Are all data processed in some well-defined order, or is random access allowed?
15
space for each data item it stores, time to perform each basic operation, programming effort.
16
continued
Start account: a few minutes Transactions: a few seconds Close account: overnight
17
2.
Reinforce the concept that costs and benefits exist for every data structure. Learn the commonly used data structures.
3.
These techniques also allow you to judge the merits of new data structures that you or others might invent.
18
19
Data Structure
Each operation associated with the ADT is implemented by one or more subroutines in the implementation.
In a OO language such as C++, an ADT and its implementation together make up a class. Data structure usually refers to an organization for data in main memory. File structure: an organization for data on peripheral storage, such as a disk drive.
20
Hierarchies of labels
Ex1: transistors gates CPU. In a program, implement an ADT, then think only about the ADT, not its implementation.
21
22
23
Problems
Best thought of as inputs and matching outputs. Problem definition should include constraints on the resources that may be consumed by any acceptable solution.
25
Problems (cont)
A function is a matching between inputs (the domain) and outputs (the range). An input to a function may be single number, or a collection of information. The values making up an input are called the parameters of the function. A particular input must always result in the same output every time the function is computed.
26
A recipe: The algorithm gives us a recipe for solving the problem by performing a series of steps, where each step is completely understood and doable.
An algorithm takes the input to a problem (function) and transforms it to the output.
Algorithm Properties
An algorithm possesses the following properties:
It must be correct. It must be composed of a series of concrete steps. There can be no ambiguity as to which step will be performed next. It must be composed of a finite number of steps. It must terminate.
A computer program is an instance, or concrete representation, for an algorithm in some programming language.
29
Programs
A computer program is a concrete representation of an algorithm in some programming language. Naturally, there are many programs that are instances of the same algorithms, since any modern programming language can be used to implement any algorithm.
30
To Summarize:
A problem is a function or a mapping of inputs to outputs. An algorithm is a recipe for solving a problem whose steps are concrete and ambiguous. A program is an instantiation of an algorithm in a computer programming language.
31
Example
Problem: find y = x to the power of 2 Algorithm1: Multiply X by X Algorithm2: Add X to itself X times Program1: for (int i = 0; i<x; i++) y +=x;
32
Example (cont.)
Program2: (Assembly Intel 8086) mov bl,x // read x mov al,bl // store x mov cl,bl // int counter loop: add al,bl // al = al + x dec cl // decrement loop ctr jnz loop
33
In class exercises
Think of a program you have used that is unacceptably slow. Identify other basic operations that the program performs quickly enough. Imagine that you are a shipping clerk for a large company. You have just been handed about 1000 invoices, each of which is a single sheet of paper with a large number in the upper right corner. The invoices must be sorted by this number, in order from lowest to highest. Write down as many different approaches to sorting the invoices as you can think of.
34