This project provides a framework for commonly used data structures and algorithms written in a new iOS development language called Swift. While details of many algorithms exists on Wikipedia, these implementations are often written as pseudocode, or are expressed in C or C++. With Swift now officially released, its general syntax should be familiar enough for most programmers to understand.
As a developer, you should already be familiar with the basics of programming. Beyond algorithms, this project also aims to provide an alternative for learning the basics of Swift. This includes implementations of many Swift-specific features such as optionals, extensions and generics. Beyond Swift, audiences should be familiar with Singleton and Factory design patterns along with sets, arrays and dictionaries.
The project features code-level examples for the following items:
- Linked Lists
- Binary Search
- Insertion Sort
- Bubble Sort
- Quick Sort
- Merge Sort
- Generics
- Hash Tables
- Binary Search Trees
- Tries
- Stacks & Queues
- Graphs
- Dijkstra's Shortest Path
- Heaps & Heapsort Operations
- Depth-First Search
- Breath-First Search
I plan to write further additional examples of algorithms and all developers are welcome to follow the project through Github or online at www.waynewbishop.com/swift. As a collaborative open-source effort, I also welcome feedback and contribution from others.
/* graph traversal - breadth first search */
func traverseGraphBFS(startingv: Vertex) {
//establish a new queue
var graphQueue: Queue<Vertex> = Queue<Vertex>()
//queue a starting vertex
graphQueue.enQueue(startingv)
while(!graphQueue.isEmpty()) {
//traverse the next queued vertex
var vitem = graphQueue.deQueue() as Vertex!
//add unvisited vertices to the queue
for e in vitem.neighbors {
if e.neighbor.visited == false {
println("adding vertex: \(e.neighbor.key!) to queue..")
graphQueue.enQueue(e.neighbor)
}
}
vitem.visited = true
println("traversed vertex: \(vitem.key!)..")
} //end while
println("graph traversal complete..")
} //end function
Running Swift Structures requires Xcode 6.0 GM Seed or later. The directories are organized as follows:
- Source - Code for all Swift data structures and algorithms
- Example - An empty iOS single-view application template
- SwiftTests - Unit tests with XCTest Framework
Individuals are welcome to use the code with commercial and open-source projects. As a courtesy, please provide attribution to waynewbishop.com. For more information, review the complete license agreement.
- master - The production branch. Clone or fork this repository for the latest copy
- develop - The active development branch. <a href="https://help.github.com/articles/creating-a-pull-request" target=_blank">Pull requests should be directed to this branch
Have a question? Feel free to contact me on Twitter or online.