Book Image

C++ Data Structures and Algorithm Design Principles

By : John Carey, Anil Achary, Shreyans Doshi, Payas Rajan
Book Image

C++ Data Structures and Algorithm Design Principles

By: John Carey, Anil Achary, Shreyans Doshi, Payas Rajan

Overview of this book

C++ is a mature multi-paradigm programming language that enables you to write high-level code with a high degree of control over the hardware. Today, significant parts of software infrastructure, including databases, browsers, multimedia frameworks, and GUI toolkits, are written in C++. This book starts by introducing C++ data structures and how to store data using linked lists, arrays, stacks, and queues. In later chapters, the book explains the basic algorithm design paradigms, such as the greedy approach and the divide-and-conquer approach, which are used to solve a large variety of computational problems. Finally, you will learn the advanced technique of dynamic programming to develop optimized implementations of several algorithms discussed in the book. By the end of this book, you will have learned how to implement standard data structures and algorithms in efficient and scalable C++ 14 code.
Table of Contents (11 chapters)

Sorting Using Divide and Conquer

We shall now explore how to implement the divide-and-conquer approach when it comes to solving another standard problem – sorting. The importance of having an efficient sorting algorithm cannot be overstated. In the early days of computing in the 1960s, computer manufacturers estimated that 25% of all CPU cycles in their machines were spent sorting elements of arrays. Although the computing landscape has changed significantly over the years, sorting is still widely studied today and remains a fundamental operation in several applications. For instance, it is the key idea behind indexes in databases, which then allow quick access to the stored data using a logarithmic time search, which is similar to binary search.

The general requirements for an implementation of a sorting algorithm are as follows:

  • The implementation should be able to work with any datatype. It should be able to sort integers, floating-point decimals, and even C++ structures or...