자료구조와 알고리즘

✔️ Reading Note - 알고리즘

도서 - 그림으로 개념을 이해하는 알고리즘 / 아디트야 바르가바

참고 자료

배열과 연결리스트

선택 정렬

재귀 함수

Stack

Call stack - 호출스택

Queue

Binary Search - 이진탐색

func binarySearch<T:Comparable>(inputArr:Array<T>, searchItem: T) -> Int? {
    var lowerIndex = 0;
    var upperIndex = inputArr.count - 1

    while (true) {
        let currentIndex = (lowerIndex + upperIndex)/2
        if(inputArr[currentIndex] == searchItem) {
            return currentIndex
        } else if (lowerIndex > upperIndex) {
            return nil
        } else {
            if (inputArr[currentIndex] > searchItem) {
                upperIndex = currentIndex - 1
            } else {
                lowerIndex = currentIndex + 1
            }
        }
    }
}

var myArray = [1,2,3,4,5,6,7,9,10];
if let searchIndex = binarySearch(myArray,5){
    println("Element found on index: \(searchIndex)");
}

Insertion Sort

Quick Sort

func quicksort<T: Comparable>(_ a: [T]) -> [T] {
  guard a.count > 1 else { return a }

  let pivot = a[a.count/2]
  let less = a.filter { $0 < pivot }
  let equal = a.filter { $0 == pivot }
  let greater = a.filter { $0 > pivot }

  return quicksort(less) + equal + quicksort(greater)
}

Hash Table

Graph, 너비 우선 탐색

다익스트라 알고리즘

탐욕 알고리즘

동적 프로그래밍

KNN 알고리즘

Tree, 트리

역 인덱스

퓨리에 변환

병렬 알고리즘

맵 리듀스