{"id":20852624,"url":"https://github.com/eleev/swift-algorithms-data-structs","last_synced_at":"2025-09-20T01:26:07.156Z","repository":{"id":48606766,"uuid":"109569730","full_name":"eleev/swift-algorithms-data-structs","owner":"eleev","description":"📒 Algorithms and Data Structures. The used approach attempts to fully utilize the Swift and POP.","archived":false,"fork":false,"pushed_at":"2021-07-18T13:32:29.000Z","size":1378,"stargazers_count":61,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T00:51:09.086Z","etag":null,"topics":["algorithms","apple","data-structures","datastructures","education","ios","learning","playground","playgrounds","scenekit","spritekit","swift","swift-algorithms","swift-datastructures","tutorial","visualization","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eleev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-05T10:29:08.000Z","updated_at":"2024-07-28T15:29:23.000Z","dependencies_parsed_at":"2022-09-05T07:00:50.899Z","dependency_job_id":null,"html_url":"https://github.com/eleev/swift-algorithms-data-structs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleev%2Fswift-algorithms-data-structs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleev%2Fswift-algorithms-data-structs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleev%2Fswift-algorithms-data-structs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleev%2Fswift-algorithms-data-structs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eleev","download_url":"https://codeload.github.com/eleev/swift-algorithms-data-structs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253681889,"owners_count":21946825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","apple","data-structures","datastructures","education","ios","learning","playground","playgrounds","scenekit","spritekit","swift","swift-algorithms","swift-datastructures","tutorial","visualization","xcode"],"created_at":"2024-11-18T03:18:16.983Z","updated_at":"2025-09-20T01:26:02.071Z","avatar_url":"https://github.com/eleev.png","language":"Swift","readme":"# swift-algorithms-data-structs [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n[![Language](https://img.shields.io/badge/language-Swift_5.3-orange.svg)]()\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)]()\n\n**Last Update: 18/July/2021.**\n\n![](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/cover-algo-datastruct.png)\n\n### If you like the project, please give it a star ⭐ It will show the creator your appreciation and help others to discover the repo.\n\n# ✍️ About \nThe repository contains examples of common `Algorithms` and `Data Structures` implemented using the latest stable version of `Swift`programming language. The development attempts to fully utilize `Standard Library` and `Protocol-Oriented` paradigm. The project provides interactive visualizations using `SpriteKit` and `SceneKit` frameworks (in development).\n\n## 📚 Content \nEach major section will be wrapped into a separete `.playground` file, meaning that `data structures` and `algorithms` will be separeted for convenient management. :octocat:\n\n- [About](#about)\n- [Data Structures](https://github.com/jVirus/swift-algorithms-data-structs/tree/master/Data%20Structures.playground/Pages)\n  - [Stack](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Stack.xcplaygroundpage/Contents.swift)\n  - [Circular Buffer](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/CircularBuffer.xcplaygroundpage/Contents.swift)\n  - [Queue](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Queue.xcplaygroundpage/Contents.swift)\n  - [Priority Queue](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Sources/PriorityQueue.swift)\n  - [Dequeue](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Dequeue.xcplaygroundpage/Contents.swift)\n  - [Linked List](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Linked%20List.xcplaygroundpage/Contents.swift)\n  - [Doubly Linked List](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/DoublyLinkedList.xcplaygroundpage/Contents.swift)\n  - Circular Linked List\n  - [Tree](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Tree.xcplaygroundpage/Contents.swift) \n  - [Binary Tree](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/BinaryTree.xcplaygroundpage/Contents.swift)\n  - [Binary Search Tree](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/BinarySearchTree.xcplaygroundpage/Contents.swift)\n  - B-Tree\n  - Splay Tree\n  - [Red-Black Tree](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Red-Black%20Tree.xcplaygroundpage/Contents.swift)\n  - AVL Tree\n  - Trie Tree\n  - Radix Tree\n  - Quad Tree\n  - Octree\n  - [Heap](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Heap.xcplaygroundpage/Contents.swift) \n  - [Graph](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Graph.xcplaygroundpage/Contents.swift)\n- Algorithms\n  - [Sort](https://github.com/jVirus/swift-algorithms-data-structs/tree/master/Sort.playground/Pages)\n    - [Insertion](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Insertion.xcplaygroundpage/Contents.swift)\n    - [Merge](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Merge.xcplaygroundpage/Contents.swift)\n    - [Quick (Hoare's Partitioning Scheme)](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Quick-Hoare-Scheme.xcplaygroundpage/Contents.swift)\n    - [Quick (Lomuto's Partitioning Scheme)](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Quick-Lomuto-Scheme.xcplaygroundpage/Contents.swift)\n    - [Bubble](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Bubble.xcplaygroundpage/Contents.swift)\n    - [Heap](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Sources/Heap.swift)\n    - [Shell](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Shell.xcplaygroundpage/Contents.swift)\n    - [Radix](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Sort.playground/Pages/Radix.xcplaygroundpage/Contents.swift)\n  - [Search](https://github.com/jVirus/swift-algorithms-data-structs/tree/master/Search.playground/Pages)\n    - [Binary](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Search.playground/Pages/Binary.xcplaygroundpage/Contents.swift)\n    - [Linear](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Search.playground/Pages/Linear.xcplaygroundpage/Contents.swift)\n    - [Heap](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Heap.xcplaygroundpage/Contents.swift)\n    - [Tree](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/Data%20Structures.playground/Pages/Tree.xcplaygroundpage/Contents.swift)\n  - [String Search](https://github.com/jVirus/swift-algorithms-data-structs/tree/master/String%20Search.playground)\n    - [Brute-Force](https://github.com/jVirus/swift-algorithms-data-structs/blob/master/String%20Search.playground/Contents.swift)\n    - Boyer-Moore\n    - Rabin-Karp\n    - Finite automation\n    - Knuth-Morris-Pratt\n  - Graphs\n    - Dijkstra's shortest path algorithm\n    - Minimum Spanning Tree (unweighted tree)\n    - Minimum Spanning Tree\n    - Breadth-First Search (BFS)\n    - Depth-First Search (DFS)\n    - Shortest Path (unweighted tree)\n    \n# 📺 Interactive Visualizations\nThe following list contains interactive visualizations that were implemented as part of the project. In majority of cases you can interact with a `data structure` or `algorithm` through a number of `UI` controlls. Visualizations are implemented using `SpriteKit` framework and are intended to explain the work of `data structures` and `algorithms` in a more highlevel way, which is a great way to learn especially if you are a beginner or you aren't familiar with something listed in the repository. \n\n## Stack \nStack visalization has two main UI controlls: `push` and `pop`. They perform corresponding operations: adding a new book at the top of the stack and removing the top book from the stack. Also there is a label that shows how many books are in the stack. Since the screen size is limited and for the sake of simplicity, the number of books in stack is limited. \n\n\u003cimg src=\"https://user-images.githubusercontent.com/5098753/43043854-e85c8b82-8da3-11e8-9061-e25b82cd24e9.gif\" width=\"350\"\u003e\n\n## Queue\nQueue visualization is similar to Stack interactive visualization: it has two main `UI` controls that allow you to interact with the interface of the `Queue` data structure for `enqueue` and `dequeue` operations. You can see the number of animals in the queue as well.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/5098753/43047859-99bdd2d6-8de6-11e8-9669-10afab9a5cc7.gif\" width=\"350\"\u003e\n\n\n# 👨‍💻 Author \n[Astemir Eleev](https://github.com/jVirus)\n\n# 🔖 Licence \nTHE PROJECT IS UNDER [MIT](https://github.com/jVirus/iOS-Algo-Play-Book/blob/master/LICENSE) LICENCE \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feleev%2Fswift-algorithms-data-structs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feleev%2Fswift-algorithms-data-structs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feleev%2Fswift-algorithms-data-structs/lists"}