My Account Log in

3 options

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

EBSCOhost Academic eBook Collection (North America) Available online

View online

Ebook Central College Complete Available online

View online

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Chawdhuri, Debasish Ray, author.
Language:
English
Subjects (All):
Java (Computer program language).
Data structures (Computer science).
Algorithms.
Physical Description:
1 online resource (319 pages) : illustrations
Edition:
1st edition
Place of Publication:
Birmingham, England ; Mumbai, [India] : Packt, 2017.
System Details:
text file
Biography/History:
Ray Chawdhuri Debasish: Debasish Ray Chawdhuri is an established Java developer and has been in the industry for the last eight years. He has developed several systems, from CRUD applications to programming languages and big data processing systems. He provided the first implementation of an extensible business reporting language specification, and a product around it, to verify company financial data for the Government of India while he was employed at Tata Consultancy Services Ltd. In Talentica Software Pvt. Ltd. , he implemented a domain-specific programming language to easily implement complex data aggregation computations that compiled to Java bytecode. Currently, he leads a team developing a new high-performance structured data storage framework to be processed by Spark. The framework is named Hungry Hippos and will be open-sourced very soon. He also blogs at http: //www. geekyarticles. com/ about Java and other computer science-related topics. He has worked for Tata Consultancy Services Ltd. , Oracle India Pvt. Ltd. , and Talentica Software Pvt. Ltd.
Summary:
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...
Contents:
Cover
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
Removal of the last element
Circular linked list
Insertion
Removal
Rotation
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
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
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
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
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
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
Deletion
The worst case of a red-black tree
Hash tables
The complexity of insertion
Search
Complexity of the search.
Choice of load factor
Chapter 9: Advanced General Purpose Data Structures
Priority queue ADT
Heap
Removal of minimum elements
Analysis of complexity
Serialized representation
Array-backed heap
Linked heap
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
Complexity of operations in a binomial forest
Sorting using a priority queue
In-place heap sort
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
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
Index.
Notes:
Includes index.
Description based on online resource; title from PDF title page (ebrary, viewed May 19, 2017).
ISBN:
9781785888076
1785888072
OCLC:
987331250

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account