Data Structures and Algorithms in Swift: Implement Stacks, Queues, Dictionaries, and Lists in Your Apps
Data Structures and Algorithms in Swift: Implement Stacks, Queues, Dictionaries, and Lists in Your Apps
Data Structures and Algorithms in Swift: Implement Stacks, Queues, Dictionaries, and Lists in Your Apps
Algorithms in Swift
Implement Stacks, Queues,
Dictionaries, and Lists
in Your Apps
Elshad Karimov
Data Structures and Algorithms in Swift: Implement Stacks, Queues,
Dictionaries, and Lists in Your Apps
Elshad Karimov
New York, New York, USA
Chapter 1: Arrays����������������������������������������������������������������������������������1
Introduction������������������������������������������������������������������������������������������������1
Main Features of Arrays�����������������������������������������������������������������������������2
Retrieving Elements from an Array������������������������������������������������������������4
Adding Elements to an Array����������������������������������������������������������������������5
Removing Elements from an Array�������������������������������������������������������������6
Built-in Functions and Properties���������������������������������������������������������������6
isEmpty�������������������������������������������������������������������������������������������������6
First and Last����������������������������������������������������������������������������������������7
Reversed and Reverse��������������������������������������������������������������������������7
Count�����������������������������������������������������������������������������������������������������7
Conclusion��������������������������������������������������������������������������������������������������8
Chapter 2: Dictionaries�������������������������������������������������������������������������9
Introduction������������������������������������������������������������������������������������������������9
Accessing Values in a Dictionary��������������������������������������������������������������11
Adding/Modifying to a Dictionary�������������������������������������������������������������13
Removing a Value from a Dictionary��������������������������������������������������������14
iii
Table of Contents
Chapter 3: Sets�����������������������������������������������������������������������������������17
Accessing, Adding, and Removing an Element of a Set���������������������������17
Accessing an Element������������������������������������������������������������������������������17
Adding an Element�����������������������������������������������������������������������������������19
Removing Elements����������������������������������������������������������������������������������19
Set Operations������������������������������������������������������������������������������������������20
Comparison Operations�����������������������������������������������������������������������20
Membership and Equality Operations������������������������������������������������������24
Set Equality�����������������������������������������������������������������������������������������24
Set Membership����������������������������������������������������������������������������������24
Conclusion������������������������������������������������������������������������������������������������26
Chapter 4: Stacks�������������������������������������������������������������������������������27
Using Swift with Stacks���������������������������������������������������������������������������28
Stack Structures���������������������������������������������������������������������������������������31
Stack Extensions��������������������������������������������������������������������������������������32
Conclusion������������������������������������������������������������������������������������������������32
Chapter 5: Queue��������������������������������������������������������������������������������33
Implementation����������������������������������������������������������������������������������������35
Conclusion������������������������������������������������������������������������������������������������40
iv
Table of Contents
Chapter 8: Trees����������������������������������������������������������������������������������61
Creation����������������������������������������������������������������������������������������������������62
Insertion����������������������������������������������������������������������������������������������63
Searching Data������������������������������������������������������������������������������������64
Conclusion������������������������������������������������������������������������������������������������66
v
Table of Contents
vi
Table of Contents
Delete�������������������������������������������������������������������������������������������������������94
Deleting a Leaf������������������������������������������������������������������������������������94
Deleting a Node with One Child�����������������������������������������������������������95
Deleting a Node with Two Children�����������������������������������������������������96
Conclusion����������������������������������������������������������������������������������������������100
vii
Table of Contents
Selection Sort�����������������������������������������������������������������������������������������137
Implementation���������������������������������������������������������������������������������139
Insertion Sort������������������������������������������������������������������������������������������140
Implementation���������������������������������������������������������������������������������142
Merge Sort���������������������������������������������������������������������������������������������143
Implementation���������������������������������������������������������������������������������146
Quick Sort�����������������������������������������������������������������������������������������������148
Implementation���������������������������������������������������������������������������������151
Pivot Selection����������������������������������������������������������������������������������152
Conclusion����������������������������������������������������������������������������������������������153
viii
Table of Contents
Dijkstra’s Algorithm��������������������������������������������������������������������������������182
Implementation���������������������������������������������������������������������������������190
Algorithm�������������������������������������������������������������������������������������������191
Conclusion����������������������������������������������������������������������������������������������194
Index�������������������������������������������������������������������������������������������������203
ix
About the Author
Elshad Karimov is an experienced programmer with more than 8 years
experience of different programming languages and a solid background in
iOS development as well as Oracle, SQL, C#, Java, Python and HTML/CSS.
He’s familiar with the performance limits and characteristics of Swift and
the nature and function of embedded databases and system datastores.
xi
About the Technical Reviewer
Felipe Laso is a Senior Systems Engineer working at Lextech Global
Services. He’s also an aspiring game designer/programmer. You can follow
him on Twitter @iFeliLM or on his blog.
xiii