'There are many textbooks on algorithms focusing on big-O notation and general design principles. This book offers a completely unique aspect of taking the design and analyses to the level of predictable practical efficiency. No sacrifices in generality are made, but rather a convenient formalism is developed around external memory efficiency and parallelism provided by modern computers. The benefits of randomization are elegantly used for obtaining simple algorithms, whose insightful analyses provide the reader with useful tools to be applied to other settings. This book will be invaluable in broadening the computer science curriculum with a course on algorithm engineering.' Veli Makinen, University of Helsinki
1. Prologue; 2. A warm-up!; 3. Random sampling; 4. List ranking; 5. Sorting atomic items; 6. Set intersection; 7. Sorting strings; 8. The dictionary problem; 9. Searching strings by prefix; 10. Searching strings by substring; 11. Integer coding; 12. Statistical coding; 13. Dictionary-based compressors; 14. The burrows-wheeler transform; 15. Compressed data structures; 16. Conclusion.