Java 9 data structures and algorithms : a step-by-step guide to data structures and algorithms / Debasish Ray Chawdhuri.

Gain a deep understanding of the complexity of data structures and algorithms and discover the right way to write more efficient code About This Book This book provides complete coverage of reactive and functional data structures Based on the latest version of Java 9, this book illustrates the impact of new features on data structures Gain exposure to important concepts such as Big-O Notation and Dynamic Programming Who This Book Is For This book is for Java developers who want to learn about data structures and algorithms. Basic knowledge of Java is assumed. What You Will Learn Understand the fundamentals of algorithms, data structures, and measurement of complexity Find out what general purpose data structures are, including arrays, linked lists, double ended linked lists, and circular lists Get a grasp on the basics of abstract data types - stack, queue, and double ended queue See how to use recursive functions and immutability while understanding and in terms of recursion Handle reactive programming and its related data structures Use binary search, sorting, and efficient sorting - quicksort and merge sort Work with the important concept of trees and list all nodes of the tree, traversal of tree, search trees, and balanced search trees Apply advanced general purpose data structures, priority queue-based sorting, and random access immutable linked lists Gain a better understanding of the concept of graphs, directed and undirected graphs, undirected trees, and much more In Detail Java 9 Data Structures and Algorithms covers classical, functional, and reactive data structures, giving you the ability to understand computational complexity, solve problems, and write efficient code. This book is based on the Zero Bug Bounce milestone of Java 9. We start off with the basics of algorithms and data structures, helping you understand the fundamentals and measure complexity. From here, we introduce you to concepts such as arrays, linked lists, as well as abstract data types such as stacks and queues. Next, we'll take you through the basics of functional programming while making sure you get used to thinking recursively. We provide plenty of examples along the way to help you understand each concept. You will get the also get a clear picture of reactive programming, binary searches, sorting, search trees, undirected graphs, and a whole lot more! Style and approach This book will teach you about all the major algorithms in a step-by-step manner. Specia...

Gespeichert in:
Elektronisch E-Book
Bibliographische Detailangaben
Person Chawdhuri, Debasish Ray (verfasst von)
Ausgabe1st edition
Ort, Verlag, Jahr Birmingham, England ; Mumbai, [India] : Packt , 2017
Umfang1 online resource (319 pages) : : illustrations
ISBN9781785888076
1785888072
SpracheEnglisch
ZusatzinfoIncludes index.
ZusatzinfoCover -- Copyright -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Table of Contents -- Preface -- Chapter 1: Why Bother? - Basic -- The performance of an algorithm -- Best case, worst case and the average case complexity -- Analysis of asymptotic complexity -- Asymptotic upper bound of a function -- Asymptotic upper bound of an algorithm -- Asymptotic lower bound of a function -- Asymptotic tight bound of a function -- Optimization of our algorithm -- Fixing the problem with large powers -- Improving time complexity -- Summary -- Chapter 2: Cogs and Pulleys - Building Blocks -- Arrays -- Insertion of elements in an array -- Insertion of a new element and the process of appending it -- Linked list -- Appending at the end -- Insertion at the beginning -- Insertion at an arbitrary position -- Looking up an arbitrary element -- Removing an arbitrary element -- Iteration -- Doubly linked list -- Insertion at the beginning or at the end -- Insertion at an arbitrary location -- Removing the first element -- Removing an arbitrary element -- Removal of the last element -- Circular linked list -- Insertion -- Removal -- Rotation -- Summary -- Chapter 3: Protocols - Abstract Data Types -- Stack -- Fixed-sized stack using an array -- Variable-sized stack using a linked list -- Queue -- Fixed-sized queue using an array -- Variable-sized queue using a linked list -- Double ended queue -- Fixed-length double ended queue using an array -- Variable-sized double ended queue using a linked list -- Summary -- Chapter 4: Detour - Functional Programming -- Recursive algorithms -- Lambda Expressions in Java -- Functional interface -- Implementing a functional interface with lambda -- Functional data structures and monads -- Functional linked lists -- The forEach method for a linked list -- Map for a linked list.
Fold operation on a list -- Filter operation for a linked list -- Append on a linked list -- The flatMap method on a linked list -- The concept of a monad -- Option monad -- Try monad -- Analysis of the complexity of a recursive algorithm -- Performance of functional programming -- Summary -- Chapter 5: Efficient Searching - Binary Search and Sorting -- Search algorithms -- Binary search -- Complexity of the binary search algorithm -- Sorting -- Selection sort -- Complexity of the selection sort algorithm -- Insertion sort -- Complexity of insertion sort -- Bubble sort -- Inversions -- Complexity of the bubble sort algorithm -- A problem with recursive calls -- Tail recursive functions -- Non-tail single recursive functions -- Summary -- Chapter 6: Efficient Sorting - Quicksort and Merge Sort -- Quicksort -- Complexity of quicksort -- Random pivot selection in quicksort -- Merge sort -- The complexity of merge sort -- Avoiding the copying of tempArray -- Complexity of any comparison-based sorting -- The stability of a sorting algorithm -- Summary -- Chapter 7: Concepts of Tree -- A tree data structure -- The traversal of a tree -- The depth-first traversal -- The breadth-first traversal -- The tree abstract data type -- Binary tree -- Types of depth-first traversals -- Non-recursive depth-first search -- Summary -- Chapter 8: More About Search - Search Trees and Hash Tables -- Binary search tree -- Insertion in a binary search tree -- Invariant of a binary search tree -- Deletion of an element from a binary search tree -- Complexity of the binary search tree operations -- Self-balancing binary search tree -- AVL tree -- Complexity of search, insert, and delete in an AVL tree -- Red-black tree -- Insertion -- Deletion -- The worst case of a red-black tree -- Hash tables -- Insertion -- The complexity of insertion -- Search -- Complexity of the search.
Choice of load factor -- Summary -- Chapter 9: Advanced General Purpose Data Structures -- Priority queue ADT -- Heap -- Insertion -- Removal of minimum elements -- Analysis of complexity -- Serialized representation -- Array-backed heap -- Linked heap -- Insertion -- Removal of the minimal elements -- Complexity of operations in ArrayHeap and LinkedHeap -- Binomial forest -- Why call it a binomial tree? -- Number of nodes -- The heap property -- Binomial forest -- Complexity of operations in a binomial forest -- Sorting using a priority queue -- In-place heap sort -- Summary -- Chapter 10: Concepts of Graph -- What is a graph? -- The graph ADT -- Representation of a graph in memory -- Adjacency matrix -- Complexity of operations in a sparse adjacency matrix graph -- More space-efficient adjacency-matrix-based graph -- Complexity of operations in a dense adjacency-matrix-based graph -- Adjacency list -- Complexity of operations in an adjacency-list-based graph -- Adjacency-list-based graph with dense storage for vertices -- Complexity of the operations of an adjacency-list-based graph with dense storage for vertices -- Traversal of a graph -- Complexity of traversals -- Cycle detection -- Complexity of the cycle detection algorithm -- Spanning tree and minimum spanning tree -- For any tree with vertices V and edges E, |V| = |E| + 1 -- Any connected undirected graph has a spanning tree -- Any undirected connected graph with the property |V| = |E| + 1 is a tree -- Cut property -- Minimum spanning tree is unique for a graph that has all the edges whose costs are different from one another -- Finding the minimum spanning tree -- Union find -- Complexity of operations in UnionFind -- Implementation of the minimum spanning tree algorithm -- Complexity of the minimum spanning tree algorithm -- Summary -- Chapter 11: Reactive Programming.
What is reactive programming? -- Producer-consumer model -- Semaphore -- Compare and set -- Volatile field -- Thread-safe blocking queue -- Producer-consumer implementation -- Spinlock and busy wait -- Functional way of reactive programming -- Summary -- Index.
Online-ZugangEBSCO EBS 2024

Bei Problemen beim Zugriff auf diese Online-Quelle beachten Sie unsere Hinweise zum Zugriff auf lizenzierte Angebote von außerhalb des Campus.