Skip to content

Commit 28d638c

Browse files
authored
Merge pull request kelvins#238 from Roberto-deP-Martins/main
Add Swift Binary Search algorithm
2 parents 1a005dc + 94be6d1 commit 28d638c

File tree

3 files changed

+66
-4
lines changed

3 files changed

+66
-4
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ Com o objetivo de alcançar uma abrangência maior e encorajar mais pessoas a co
218218
</a>
219219
</td>
220220
<td> <!-- Swift -->
221-
<a href="./CONTRIBUTING.md">
222-
<img align="center" height="25" src="./logos/github.svg" />
221+
<a href="./src/swift/binarySearch.swift">
222+
<img align="center" height="25" src="./logos/swift.svg" />
223223
</a>
224224
</td>
225225
<td> <!-- Rust -->
@@ -334,8 +334,8 @@ Com o objetivo de alcançar uma abrangência maior e encorajar mais pessoas a co
334334
</a>
335335
</td>
336336
<td> <!-- Swift -->
337-
<a href="./CONTRIBUTING.md">
338-
<img align="center" height="25" src="./logos/github.svg" />
337+
<a href="./src/swift/sequentialSearch.swift">
338+
<img align="center" height="25" src="./logos/swift.svg" />
339339
</a>
340340
</td>
341341
<td> <!-- Rust -->

src/swift/binarySearch.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// binarySearch.swift
3+
//
4+
//
5+
// Written by Roberto Martins on 07/10/2023
6+
// Based on the C code presented in the Portuguese Wikipedia article for Binary Search
7+
8+
func binarySearch(array: [Int], searchedElement: Int) -> Int {
9+
var firstIndex: Int = 0
10+
var lastIndex: Int = array.count - 1
11+
var middleIndex: Int;
12+
while firstIndex <= lastIndex {
13+
middleIndex = (firstIndex + lastIndex) / 2
14+
if (searchedElement == array[middleIndex]) {
15+
return middleIndex
16+
}
17+
searchedElement < array[middleIndex] ? (lastIndex = middleIndex - 1) : (firstIndex = middleIndex + 1)
18+
}
19+
return -1 // If the searched element isn't in the array
20+
}
21+
22+
func main() {
23+
let sortedArray = [1, 2, 3, 4, 5, 6, 7, 8, 9]
24+
let elementToSearch = 5
25+
26+
let result = binarySearch(array: sortedArray, searchedElement: elementToSearch)
27+
28+
if result != -1 {
29+
print("Element \(elementToSearch) found at index \(result)")
30+
} else {
31+
print("Element \(elementToSearch) not found in the array.")
32+
}
33+
}
34+
35+
main()

src/swift/sequentialSearch.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* sequentialSearch.swift
2+
Written by Roberto Martins on 07/10/2023
3+
*/
4+
5+
func sequentialSearch(array: [Int], searchedElement: Int) -> Int {
6+
for index in 0..<array.count {
7+
if array[index] == searchedElement {
8+
return index
9+
}
10+
}
11+
return -1 // If element isn't found
12+
}
13+
14+
func main() {
15+
let numbers = [4, 7, 2, 9, 1, 5, 8]
16+
let elementToSearch = 5
17+
18+
let result = sequentialSearch(array: numbers, searchedElement: elementToSearch)
19+
20+
if result != -1 {
21+
print("Element \(elementToSearch) found at index \(result)")
22+
} else {
23+
print("Element \(elementToSearch) not found in the array.")
24+
}
25+
}
26+
27+
main()

0 commit comments

Comments
 (0)