Chapter 0 Preface¶
Chapter 1 Tutorials¶
- 1.1. Reading Input (from Files or Otherwise)
- 1.2. Random Access Files In Java
- 1.3. Command Line Basics
- 1.4. Parsing Command Line Parameters In Your Progam
- 1.5. Common Debugging Methods
- 1.6. Debugging In Eclipse
- 1.7. Using Parameters in Eclipse
- 1.8. Writing JUnit Tests
- 1.9. JUnit Testing And You
- 1.10. Code Coverage In JUnit
- 1.11. Testing
- 1.12. Testing for Code Coverage
- 1.13. Another Example
- 1.14. Bowling Example
Chapter 2 Object Oriented Programming¶
Chapter 3 Pointers and References¶
- 3.1. Pointers Chapter Introduction
- 3.2. Basic References Part 1
- 3.3. Basic References Part 2
- 3.4. Pointers Syntax
- 3.5. Local Memory
- 3.6. Heap Memory
- 3.7. Pointers Concepts Summary
- 3.8. Practice Exercises
- 3.8.1. JHAVEPOPEx1
- 3.8.2. JHAVEPOPEx2
- 3.8.3. JHAVEPOPEx3
- 3.8.4. JHAVEPOPEx4
- 3.8.5. JHAVEPOPEx5
- 3.8.6. JHAVEPOPEx6
- 3.8.7. JHAVEPOPEx7
- 3.8.8. JHAVEPOPEx8
- 3.8.9. JHAVEPOPEx9
- 3.8.10. JHAVEPOPEx10
- 3.8.11. JHAVEPOPEx11
- 3.8.12. JHAVEPOPEx12
- 3.8.13. JHAVEPOPEx13
- 3.8.14. JHAVEPOPEx14
- 3.8.15. JHAVEPOPEx15
- 3.8.16. JHAVEPOPEx16
- 3.8.17. JHAVEPOPEx17
- 3.8.18. JHAVEPOPEx18
Chapter 4 Linear Structures 1¶
Chapter 5 Algorithm Analysis¶
- 5.1. Chapter Introduction
- 5.2. Problems, Algorithms, and Programs
- 5.3. Comparing Algorithms
- 5.4. Best, Worst, and Average Cases
- 5.5. Faster Computer, or Faster Algorithm?
- 5.6. Asymptotic Analysis and Upper Bounds
- 5.7. Lower Bounds and \(\Theta\) Notation
- 5.8. Calculating Program Running Time
- 5.9. Analyzing Problems
- 5.10. Common Misunderstandings
- 5.11. Multiple Parameters
- 5.12. Amortized Analysis
- 5.13. Code Tuning and Empirical Analysis
- 5.14. Algorithm Analysis Summary Exercises
Chapter 6 Recursion¶
- 6.1. Introduction
- 6.2. Writing a recursive function
- 6.3. Code Completion Practice Exercises
- 6.3.1. Introduction
- 6.3.2. Recursion Programming Exercise: Largest
- 6.3.3. Recursion Programming Exercise: Multiply
- 6.3.4. Recursion Programming Exercise: GCD
- 6.3.5. Recursion Programming Exercise: log
- 6.3.6. Recursion Programming Exercise: Cummulative Sum
- 6.3.7. Recursion Programming Exercise: Add odd values
- 6.3.8. Recursion Programming Exercise: Sum Of the Digits
- 6.3.9. Recursion Programming Exercise: Count Characters
- 6.4. Writing More Sophisticated Recursive Functions
- 6.5. Harder Code Completion Practice Exercises
- 6.6. Writing Practice Exercises
- 6.7. Tracing Recursive Code
- 6.8. Tracing Practice Exercises
- 6.9. Summary Exercises
Chapter 7 Searching¶
Chapter 8 Sorting¶
- 8.1. Chapter Introduction: Sorting
- 8.2. Sorting Terminology and Notation
- 8.3. Insertion Sort
- 8.4. Bubble Sort
- 8.5. Selection Sort
- 8.6. The Cost of Exchange Sorting
- 8.7. Optimizing Sort Algorithms with Code Tuning
- 8.8. Mergesort Concepts
- 8.9. Implementing Mergesort
- 8.10. Quicksort
- 8.11. Heapsort
- 8.12. Shellsort
- 8.13. Binsort
- 8.14. Radix Sort
- 8.15. An Empirical Comparison of Sorting Algorithms
- 8.16. Lower Bounds for Sorting
- 8.17. Sorting Summary Exercises
Chapter 9 Linear Structures 2¶
Chapter 10 General Trees¶
Chapter 11 Binary Trees 1¶
- 11.1. Binary Trees Chapter Introduction
- 11.2. Binary Trees
- 11.3. Binary Tree as a Recursive Data Structure
- 11.4. Binary Tree Traversals
- 11.5. Implementing Tree Traversals
- 11.6. Information Flow in Recursive Functions
- 11.6.1. Information Flow in Recursive Functions
- 11.6.2. Binary Tree Set Depth Exercise
- 11.6.3. Collect-and-return
- 11.6.4. Binary Tree Check Sum Exercise
- 11.6.5. Binary Tree Leaf Nodes Count Exercise
- 11.6.6. Binary Tree Sum Nodes Exercise
- 11.6.7. Combining Information Flows
- 11.6.8. Binary Tree Check Value Exercise
- 11.6.9. Combination Problems
- 11.6.10. Binary Tree Height Exercise
- 11.6.11. Binary Tree Get Difference Exercise
- 11.6.12. Binary Tree Has Path Sum Exercise
- 11.7. Binary Tree Node Implementations
- 11.8. Binary Search Trees
- 11.9. Binary Tree Guided Information Flow
- 11.10. Multiple Binary Trees
- 11.11. Binary Tree Chapter Summary