Book Image

C# Data Structures and Algorithms

By : Marcin Jamro
Book Image

C# Data Structures and Algorithms

By: Marcin Jamro

Overview of this book

Data structures allow organizing data efficiently. They are critical to various problems and their suitable implementation can provide a complete solution that acts like reusable code. In this book, you will learn how to use various data structures while developing in the C# language as well as how to implement some of the most common algorithms used with such data structures. At the beginning, you will get to know arrays, lists, dictionaries, and sets together with real-world examples of your application. Then, you will learn how to create and use stacks and queues. In the following part of the book, the more complex data structures will be introduced, namely trees and graphs, together with some algorithms for searching the shortest path in a graph. We will also discuss how to organize the code in a manageable, consistent, and extendable way. By the end of the book,you will learn how to build components that are easy to understand, debug, and use in different applications.
Table of Contents (14 chapters)

"Sorted" sets


The previously described class, HashSet, can be understood as a dictionary that stores only keys, without values. So, if there is the SortedDictionary class, maybe there is also the SortedSet class? Indeed, there is! However, can a set be "sorted"? Why is the "sorted" word written with quotation marks? The answer is simple—by definition, a set stores a collection of distinct objects without duplicated elements and without a particular order. If a set does not support order, how can it be "sorted"? For this reason, a "sorted" set can be understood as a combination of HashSet and SortedList, not a set itself.

The "sorted" set can be used if you want to have a sorted collection of distinct objects without duplicated elements. The suitable class is named SortedSet and is available in the System.Collections.Generic namespace. It has a set of methods, similar to those already described in the case of the HashSet class, such as UnionWith, IntersectWith, ExceptWith, SymmetricExceptWith...