Containers and Iterators

VectorInfo Class Implementation

VectorInfo Class Application

VectorInfo Class Application (cont'd)

Program Output for n = 15

Decoupling Index Handling from Loops

Decoupling Index Handling: First Try

Revised VectorInfo Class Definition

Revised VectorInfo Methods

Eliminating Index Handling Entirely

New VectorInfo Class

Trade-Offs

Possible Remedies

Iterator Classes

Class Diagram

VectorIterInfo Implementation

VectorIterInfo Example

Using Multiple Iterators

Enhancing the VectorIterInfo Class

New VectorIterInfo Class

New VectorIterInfo Methods

Original Example Again

Output

Application: quickSort

quickSort Trace

quickSort Trace (cont'd)

quickSort Trace (cont'd)

quickSort Trace (cont'd)

quickSort Trace (cont'd)

The partition Procedure

A SortInfo Class

Example Using SortInfo

Example Output

Implementing quickSort with Iterators

SortInfo::quickSort Method

SortInfo::Partition Method

SortInfo::Partition Method (cont'd)

Analysis of quickSort

Analysis of quickSort (cont'd)

Analysis of quickSort (cont'd)

Analysis of quickSort (cont'd)

Assuming Vector Values are Randomly Distributed

Assuming Vector Values are Randomly Distributed (cont'd)

Assuming Vector is Already Sorted or Nearly Sorted

Analysis of quickSort (Summary)

Efficiency Comparisons