Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.swift
- // exAlgorithms
- //
- // Created by Judar Lima on 13/01/19.
- // Copyright © 2019 Judar Lima. All rights reserved.
- //
- import Foundation
- func binarySearch(by number: Int, at list: [Int]) -> String {
- let left = list.startIndex
- let right = list.endIndex - 1
- let errorMessage = "The number \(number) does not exist in this list"
- let numberFound = "The number \(number) is in the list at index: "
- let result = divideAndCoquer(with: number, list: list, left: left, right: right)
- return result == nil ? errorMessage : numberFound + "\(String(describing: result!))"
- }
- func divideAndCoquer(with number: Int, list: [Int], left: Int, right: Int) -> Int? {
- let middle = (left + right) / 2
- if number < list[left] || number > list[right] {
- return nil
- }
- else if number == list[left] {
- return left
- }
- else if number == list[right] {
- return right
- }
- else if number == list[middle] {
- return middle
- }
- else if number < list[middle] {
- return divideAndCoquer(with: number, list: list, left: left, right: middle)
- }
- else if number > list[middle] {
- return divideAndCoquer(with: number, list: list, left: middle, right: right)
- }
- return nil
- }
- let list = [1, 3, 6, 7, 8, 10, 22, 23, 27, 29, 30, 33, 35, 38, 41, 43, 44, 46]
- let randomNumber = list.randomElement()
- print(binarySearch(by: randomNumber!, at: list))
- print("\t _________________________________")
- let invalidNumber = 9123
- print(binarySearch(by: invalidNumber, at: list))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement