Data Structures and Algorithms in JavaScript

Brought by: egghead.io

Overview

This course teaches you how to implement your first data structures and algorithms. In the process, you’ll learn some fundamental computer science concepts as well. We’ll build these from scratch using JavaScript, but what we learn can be taken and used in any other language, too.
You will learn how to build: queues, stacks, linked lists, graphs, and trees. You’ll learn to implement several different sorting algorithms: bubble, insert, merge, and quick. Each of these lessons will not only teach you their implementation, but the tradeoffs made in choosing one over another. By proxy, you’ll learn about concepts like Big O notation and recursion.

Syllabus

  • Course Introduction: Data Structures and Algorithms in JavaScript
  • Queue Data Structure in JavaScript
  • Priority Queue JavaScript Data Structure
  • Stack Data Structure in JavaScript
  • Linked List Data Structure in JavaScript
  • JavaScript Graph Data Structure
  • Breadth First JavaScript Search Algorithm for Graphs
  • Write a Depth First Search Algorithm for Graphs in JavaScript
  • Tree Data Structure in JavaScript
  • Build a Binary Tree in JavaScript and Several Traversal Algorithms
  • Sort an Array with a JavaScript do while Loop using Bubble Sort
  • Sort an Array with a Nested for Loop using Insertion Sort in JavaScript
  • Divide and Recurse Over an Array with Merge Sort in JavaScript
  • Recursively Sort an Array in JavaScript with Quick Sort

Taught by

Kyle Shevlin

Data Structures and Algorithms in JavaScript
Go to course

Data Structures and Algorithms in JavaScript

Brought by: egghead.io

  • egghead.io
  • Paid
  • English
  • Certificate Not Available
  • Available at any time
  • All
  • N/A
8.1.2PHP Version1.27sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (763ms)
    • Application (507ms)
    • 1 x Booting (59.91%)
      762.81ms
      1 x Application (39.86%)
      507.49ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed12.08ms
      • select * from `courses` where `slug_en` = 'data-structures-and-algorithms-in-javascript' limit 1
        10.2ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. data-structures-and-algorithms-in-javascript
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-06-21 14:01:49' where `id` = 2113
        870μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-21 14:01:49
        • 1. 2113
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (6)
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (29) and `providers`.`deleted_at` is null
        220μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 2104 limit 1
        370μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2104
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        lC0woyOzmQZmNAfLLaDwSocDn2jRpB5enSy48m6V
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/data-structures-and-algorithms-in-javascr...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/data-structures-and-algorithms-in-javascript
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.38" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.38" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "95340a3d3d38110a-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.38" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.38" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "95340a3d3d38110a-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "21440" "REMOTE_ADDR" => "172.69.58.120" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/data-structures-and-algorithms-in-javascript" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1750514508.649 "REQUEST_TIME" => 1750514508 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 21 Jun 2025 14:01:49 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImRYdGtTTjFqZGREZjFJaVNONis5OXc9PSIsInZhbHVlIjoiZUp1ZnBOTTVRbWZTWGFyMWFhTTJ4cVNlV0R5NVJWUXM2bE9LV0M5S285SEhZVFQ0WGRLWW5oWkNFQkY4RDFZUGZRSTRQSkxwcGp0RysvVi8zUEliQUdvQ3p4VlJ2c3JtZnJ4Y0ZWSm9KOHJzWmgvZHhOakI1dFFhSnRVMmcrVWEiLCJtYWMiOiIwZjhjZjExZjFkYmRjYWQ1MTg5MjY3NWJhYmQ4NDkyNWE4ZDMyNmQxNmVhMjE3YWUzM2FkOWRhYjljOWU0NTc1IiwidGFnIjoiIn0%3D; expires=Sat, 21 Jun 2025 16:01:49 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImRYdGtTTjFqZGREZjFJaVNONis5OXc9PSIsInZhbHVlIjoiZUp1ZnBOTTVRbWZTWGFyMWFhTTJ4cVNlV0R5NVJWUXM2bE9LV0M5S285SEhZVFQ0WGRLWW5oWkNFQkY4RDFZUGZRSTRQS" 1 => "laravel_session=eyJpdiI6InV1ZEJmSHJUeEpML2F5NDZzbzNRZkE9PSIsInZhbHVlIjoiekN6em1hc3ovU0tYMldMZGxhejdTNXJUc1U2K2hrd3haelhHSDBzb0FuUXJpYnlybDlZaiszT0dnMHJZN2x4T0txQUJtdjV6Y2dsNmVRNjJ3QXpBZ2pKOTIrUTJYbStCVVFaNzYvaU1SUVBFUmpKalVKVVNEeEJ2UWgwbTYzdU8iLCJtYWMiOiJkN2U1NmM5NThhYTM5ZTUxNWY3MTVlM2YyM2Y1YzM1NTIxMDU3ZWZmOTJhOGQyMDdhOGI1ZTY3MDcwMWQ3NTkzIiwidGFnIjoiIn0%3D; expires=Sat, 21 Jun 2025 16:01:49 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6InV1ZEJmSHJUeEpML2F5NDZzbzNRZkE9PSIsInZhbHVlIjoiekN6em1hc3ovU0tYMldMZGxhejdTNXJUc1U2K2hrd3haelhHSDBzb0FuUXJpYnlybDlZaiszT0dnMHJZN2x4T0tx" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImRYdGtTTjFqZGREZjFJaVNONis5OXc9PSIsInZhbHVlIjoiZUp1ZnBOTTVRbWZTWGFyMWFhTTJ4cVNlV0R5NVJWUXM2bE9LV0M5S285SEhZVFQ0WGRLWW5oWkNFQkY4RDFZUGZRSTRQSkxwcGp0RysvVi8zUEliQUdvQ3p4VlJ2c3JtZnJ4Y0ZWSm9KOHJzWmgvZHhOakI1dFFhSnRVMmcrVWEiLCJtYWMiOiIwZjhjZjExZjFkYmRjYWQ1MTg5MjY3NWJhYmQ4NDkyNWE4ZDMyNmQxNmVhMjE3YWUzM2FkOWRhYjljOWU0NTc1IiwidGFnIjoiIn0%3D; expires=Sat, 21-Jun-2025 16:01:49 GMT; path=/XSRF-TOKEN=eyJpdiI6ImRYdGtTTjFqZGREZjFJaVNONis5OXc9PSIsInZhbHVlIjoiZUp1ZnBOTTVRbWZTWGFyMWFhTTJ4cVNlV0R5NVJWUXM2bE9LV0M5S285SEhZVFQ0WGRLWW5oWkNFQkY4RDFZUGZRSTRQS" 1 => "laravel_session=eyJpdiI6InV1ZEJmSHJUeEpML2F5NDZzbzNRZkE9PSIsInZhbHVlIjoiekN6em1hc3ovU0tYMldMZGxhejdTNXJUc1U2K2hrd3haelhHSDBzb0FuUXJpYnlybDlZaiszT0dnMHJZN2x4T0txQUJtdjV6Y2dsNmVRNjJ3QXpBZ2pKOTIrUTJYbStCVVFaNzYvaU1SUVBFUmpKalVKVVNEeEJ2UWgwbTYzdU8iLCJtYWMiOiJkN2U1NmM5NThhYTM5ZTUxNWY3MTVlM2YyM2Y1YzM1NTIxMDU3ZWZmOTJhOGQyMDdhOGI1ZTY3MDcwMWQ3NTkzIiwidGFnIjoiIn0%3D; expires=Sat, 21-Jun-2025 16:01:49 GMT; path=/; httponlylaravel_session=eyJpdiI6InV1ZEJmSHJUeEpML2F5NDZzbzNRZkE9PSIsInZhbHVlIjoiekN6em1hc3ovU0tYMldMZGxhejdTNXJUc1U2K2hrd3haelhHSDBzb0FuUXJpYnlybDlZaiszT0dnMHJZN2x4T0tx" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "lC0woyOzmQZmNAfLLaDwSocDn2jRpB5enSy48m6V" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/data-structures-and-algorithms-in-javascript" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]