Record Details
Book cover

Absolute beginner's guide to algorithms : a practical introduction to data structures and algorithms in JavaScript

With the explosive growth in the amount of data and the diversity of computing applications, efficient algorithms are needed now more than ever. Programming languages come and go, but the core of programming--algorithms and data structures--remains the same. Absolute Beginner's Guide to Algorithms is the fastest way to learn algorithms and data structures. Using helpful diagrams and fully annotated code samples in Javascript, you will start with the basics and gradually go deeper and broader into all the techniques you need to organize your data. Start fast with data structures basics: arrays, stacks, queues, trees, heaps, and more. Walk through popular search, sort, and graph algorithms. Understand Big-O notation and why some algorithms are fast and why others are slow. Balance theory with practice by playing with the fully functional JavaScript implementations of all covered data structures and algorithms

Book  - 2024
005.13 Chi
1 copy / 0 on hold

Available Copies by Location

Location
Community Centre Available
  • ISBN: 9780138222291 (pbk.)
  • Physical Description xv, 394 pages : illustrations ; 24 cm.

Content descriptions

General Note:
Includes index.

Additional Information

Syndetic Solutions - Table of Contents for ISBN Number 9780138222291
Absolute Beginner's Guide to Algorithms : A Practical Introduction to Data Structures and Algorithms in JavaScript
Absolute Beginner's Guide to Algorithms : A Practical Introduction to Data Structures and Algorithms in JavaScript
by Chinnathambi, Kirupa
Rate this title:
vote data
Click an element below to view details:

Table of Contents

Absolute Beginner's Guide to Algorithms : A Practical Introduction to Data Structures and Algorithms in JavaScript

SectionSection DescriptionPage Number
IData Structures
1    Introduction to Data Structures1
        Right Tool for the Right Job2
        Back to Data Structures5
        Conclusion6
        Some Additional Resources6
2    Big-O Notation and Complexity Analysis7
        It's Example Time8
        It's Big-O Notation Time!11
        Conclusion15
        Some Additional Resources15
3    Arrays17
        What Is an Array?18
            Adding an Item19
            Deleting an Item21
            Searching for an Item22
            Accessing an Item24
        Array Implementation / Use Cases24
        Arrays and Memory26
        Performance Considerations30
            Access31
            Insertion31
            Deletion32
            Searching32
        Conclusion32
        Some Additional Resources33
4    Linked Lists35
        Meet the Linked List36
            Finding a Value36
            Adding Nodes38
            Deleting a Node39
        Linked List: Time and Space Complexity40
            Deeper Look at the Running Time41
            Space Complexity41
        Linked List Variations41
            Singly Linked List42
            Doubly Linked List42
            Circular Linked List42
            Skip List44
        Implementation44
        Conclusion52
        Some Additional Resources52
5    Stacks53
        Meet the Stack54
        A JavaScript Implementation56
        Stacks: Time and Space Complexity58
            Runtime Performance59
            Memory Performance59
        Conclusion59
        Some Additional Resources60
6    Queues61
        Meet the Queue62
        A JavaScript Implementation64
        Queues: Time and Space Complexity66
            Runtime Performance66
            Memory Performance67
        Conclusion67
        Some Additional Resources68
7    Trees69
        Trees 10170
        Height and Depth75
        Conclusion77
        Some Additional Resources77
8    Binary Trees79
        Meet the Binary Tree80
            Rules Explained80
            Binary Tree Variants82
            What about Adding, Removing, and Finding Nodes?86
        A Simple Binary Tree Implementation86
        Conclusion89
        Some Additional Resources89
9    Binary Search Trees91
        It's Just a Data Structure93
            Adding Nodes93
            Removing Nodes97
        Implementing a Binary Search Tree103
        Performance and Memory Characteristics110
        Conclusion112
        Some Additional Resources112
10    Heaps113
        Meet the Heap114
            Common Heap Operations116
        Heap Implementation126
            Heaps as Arrays127
            The Code128
        Performance Characteristics132
            Removing the Root Node132
            Inserting an Item133
            Performance Summary134
        Conclusion134
        Some Additional Resources135
11    Hashtable (aka Hashmap or Dictionary)137
        A Very Efficient Robot138
        From Robots to Hashing Functions142
        From Hashing Functions to Hashtables145
            Adding Items to Our Hashtable146
            Reading Items from Our Hashtable147
        JavaScript Implementation/Usage148
        Dealing with Collisions150
        Performance and Memory151
        Conclusion153
        Some Additional Resources154
12    Trie (aka Prefix Tree)155
        What is a Trie?156
            Inserting Words157
            Finding Items162
            Deleting Items165
        Diving Deeper into Tries167
        Many More Examples Abound!172
        Implementation Time173
        Performance179
        Conclusion181
        Some Additional Resources181
13    Graphs183
        What Is a Graph?184
        Graph Implementation190
            Representing Nodes190
            The Code192
        Conclusion196
        Some Additional Resources197
IIAlgorithms
14    Introduction to Recursion199
        Our Giant Cookie Problem200
        Recursive function call202
            Recursive Function Call202
            Terminating condition203
        Conclusion206
        Some Additional Resources206
15    Fibonacci and Going Beyond Recursion207
        Recursively Solving the Fibonacci Sequence209
        Recursion with Memoization213
        Taking an Iteration-Based Approach215
        Going Deeper on the Speed217
        Conclusion218
        Some Additional Resources219
16    Towers of Hanoi221
        How Towers of Hanoi is Played222
        The Single Disk Case223
        It's Two Disk Time224
        Three Disks225
        The Algorithm228
        The Code Solution229
        Check Out the Recursiveness!231
        It's Math Time232
        Conclusion234
        Some Additional Resources234
17    Search Algorithms and Linear Search235
        Linear Search236
            Linear Search at Work236
            JavaScript Implementation238
            Runtime Characteristics239
        Conclusion241
        Some Additional Resources241
18    Faster Searching with Binary Search243
        Binary Search in Action244
            Sorted Items Only, Please244
            Dealing with the Middle Element245
            Dividing FTW!247
        The JavaScript Implementation250
            Iterative Approach250
            Recursive Approach251
            Example of the Code at Work252
        Runtime Performance254
        Conclusion257
        Some Additional Resources257
19    Binary Tree Traversal259
        Breadth-First Traversal260
        Depth-First Traversal265
        Implementing Our Traversal Approaches270
            Node Exploration in the Breadth-First Approach270
            Node Exploration in the Depth-First Approach272
            Looking at the Code273
        Performance of Our Traversal Approaches278
        Conclusion279
        Some Additional Resources279
20    Depth-First Search (DFS) and Breadth-First Search (BFS)281
        A Tale of Two Exploration Approaches282
            Depth-First Search Overview283
            Breadth-First Search Overview284
            Yes, They Are Different!284
        It's Example Time285
            Exploring with DFS285
            Exploring with BFS293
        When to Use DFS? When to Use BFS?298
        A Javascript Implementation300
            Using the Code305
            Implementation Detail306
        Performance Details307
        Conclusion308
        Some Additional Resources308
21    Quicksort309
        A Look at How Quicksort Works310
            A Simple Look310
        Another Simple Look314
        It's Implementation Time319
        Performance Characteristics322
            Time Complexity323
            Space Complexity323
            Stability323
        Conclusion323
        Some Additional Resources324
22    Bubblesort325
        How Bubblesort Works326
        Walkthrough329
        The Code333
        Conclusion333
        Some Additional Resources334
23    Insertion Sort335
        How Insertion Sort Works336
        One More Example347
        Algorithm Overview and Implementation349
        Performance Analysis351
        Conclusion353
        Some Additional Resources353
24    Selection Sort355
        Selection Sort Walkthrough356
        Algorithm Deep Dive364
        The JavaScript Implementation366
        Conclusion369
        Some Additional Resources369
25    Mergesort371
        How Mergesort Works372
        Mergesort: The Algorithm Details379
        Looking at the Code380
        Conclusion381
        Some Additional Resources382
26    Conclusion383
Index387