Ebook: Data Structures and Algorithms 1: Sorting and Searching
Author: Kurt Mehlhorn
- Genre: Mathematics // Algorithms and Data Structures
- Tags: Computation by Abstract Devices, Data Structures, Algorithm Analysis and Problem Complexity
- Series: EATCS Monographs on Theoretical Computer Science 1
- Year: 1984
- Publisher: Springer
- Language: English
- pdf
The design and analysis of data structures and efficient algorithms has gained considerable importance in recent years. The concept of "algorithm" is central in computer science, and "efficiency" is central in the world of money. I have organized the material in three volumes and nine chapters. Vol. 1: Sorting and Searching (chapters I to III) Vol. 2: Graph Algorithms and NP-completeness (chapters IV to VI) Vol. 3: Multi-dimensional Searching and Computational G- metry (chapters VII and VIII) Volumes 2 and 3 have volume 1 as a common basis but are indepen dent from each other. Most of volumes 2 and 3 can be understood without knowing volume 1 in detail. A general kowledge of algorith mic principles as laid out in chapter 1 or in many other books on algorithms and data structures suffices for most parts of volumes 2 and 3. The specific prerequisites for volumes 2 and 3 are listed in the prefaces to these volumes. In all three volumes we present and analyse many important efficient algorithms for the fundamental computa tional problems in the area. Efficiency is measured by the running time on a realistic model of a computing machine which we present in chapter I. Most of the algorithms presented are very recent inven tions; after all computer science is a very young field. There are hardly any theorems in this book which are older than 20 years and at least fifty percent of the material is younger than 10 years.
I. Foundations.- 1. Machine Models: RAM and RASP.- 2. Randomized Computations.- 3. A High Level Programming Language.- 4. Structured Data Types.- 4.1 Queues and Stacks.- 4.2 Lists.- 4.3 Trees.- 5. Recursion.- 6. Order of Growth.- 7. Secondary Storage.- 8. Exercises.- 9. Bibliographic Notes.- II. Sorting.- 1. General Sorting Methods.- 1.1 Sorting by Selection, a First Attempt.- 1.2 Sorting by Selection: Heapsort.- 1.3 Sorting by Partitioning: Quicksort.- 1.4 Sorting by Merging.- 1.5 Comparing Different Algorithms.- 1.6 Lower Bounds.- 2. Sorting by Distribution.- 2.1 Sorting Words.- 2.2 Sorting Reals by Distribution.- 3. The Lower Bound on Sorting, Revisited.- 4. The Linear Median Algorithm.- 5. Exercises.- 6. Bibliographic Notes.- III. Sets.- 1. Digital Search Trees.- 1.1 Tries.- 1.2 Static Tries or Compressing Sparse Tables.- 2. Hashing.- 2.1 Hashing with Chaining.- 2.2 Hashing with Open Addressing.- 2.3 Perfect Hashing.- 2.4 Universal Hashing.- 2.5 Extendible Hashing.- 3. Searching Ordered Sets.- 3.1 Binary Search and Search Trees.- 3.2 Interpolation Search.- 4. Weighted Trees.- 4.1 Optimum Weighted Trees, Dynamic Programming, and Pattern Matching.- 4.2 Nearly Optimal Binary Search Trees.- 5. Balanced Trees.- 5.1 Weight-Balanced Trees.- 5.2 Height-Balanced Trees.- 5.3 AdvancedTopicson(a,b)-Trees.- 5.3.1 Mergable Priority Queues.- 5.3.2 Amortized Rebalancing Cost and Sorting Presorted Files.- 5.3.3 Finger Trees.- 5.3.4 Fringe Analysis.- 6. Dynamic Weighted Trees.- 6.1 Self-Organizing Data Structures and Their Amortized and Average Case Analysis.- 6.1.1 Self-Organizing Linear Lists.- 6.1.2 Splay Trees.- 6.2 D-trees.- 6.3 An Application to Multidimensional Searching.- 7. A Comparison of Search Structures.- 8. Subsets of a Small Universe.- 8.1 The Boolean Array (Bitvector).- 8.2 The O(log log N) Priority Queue.- 8.3 The Union-Find Problem.- 9. Exercises.- 10. Bibliographic Notes.- IX. Algorithmic Paradigms.