👾
Algorithm
기초 개념GitHubBeakjoon
  • 알고리즘 개념
    • Dynamic Programming
    • 수학 공식
    • 그래프 탐색
    • Sorting
    • 탐색 알고리즘
  • Beakjoon
    • 그래프 탐색
      • 🥇[그래프] Gold
      • 🥈[그래프] Silver
    • 완전탐색
      • 🥉[완전 탐색] Bronze
      • 🥈[완전 탐색] Silver
    • Dynamic Programming
      • 🥈[DP] Silver
    • Presum (누적합)
      • 🍼[누적 합] Silver
    • 단계별로 풀기
      • [1단계] 입출력과 사칙연산
  • Programmers
  • 이것이 코딩테스트다
  • README
Powered by GitBook
On this page
  • 이진탐색
  • 반복문을 이용한 코드
  • 재귀를 이용한 코드
  1. 알고리즘 개념

탐색 알고리즘

이진탐색

반복문을 이용한 코드

func binarySearch(_ array: [Int], _ data: Int) -> Bool {
    var start = 0, end = array.count - 1

    while start <= end {
        let mid = (start + end) / 2
        if array[mid] == data {
            return true
        } else if array[mid] > data {
            end = mid - 1
        } else {
            start = mid + 1
        }
    }
    return false
}


print(binarySearch([1, 3, 5, 2, 3, 5, 3], 3))
print(binarySearch([1, 3, 5, 2, 3, 5, 3], 7))

재귀를 이용한 코드

func binarySearch(_ array: [Int], _ data: Int) -> Bool {
    guard !array.isEmpty else { return false }
    guard array.count > 1 else { return array[0] == data }
    
    let mid = array.count / 2
    guard array[mid] != data else { return true }
    
    let range = array[mid] > data ? 0..<mid : mid+1 ..< array.count
    return binarySearch(Array(array[range]), data)
}

print(binarySearch([1, 3, 5, 2, 3, 5, 3], 3))
print(binarySearch([1, 3, 5, 2, 3, 5, 3], 7))
PreviousSortingNextBeakjoon

Last updated 2 years ago