algo - Array

  • 데이터가 연속적으로 이어져서 랜덤 엑세스를 지원하는 데이터 구조이다.

  • 랜덤 엑세스는 인덱스를 통해서 각 요소에 접근하게 하는 것을 가능하게 해준다.

  • 배열에 관한 문제는 대부분 정렬(sorting)과 관련있다.

    • heap sort(unstable)

    • quick sort(unstable)

    • merge sort(stable)

  • 정렬 알고리즘은 O(N log N)이며, 이것을 암기한다.

  • search 연산은 O(N)이다. 배열의 모든 요소들을 돌면서 찾아야 하기 때문이다.

  • 그러나 배열이 정렬되어있다면, binary search를 사용할 수 있으며 이것은 O(logN)이다.

quick sort

  • pivot 과 partitioning 개념이 들어있다.

  • 기준점 하나를 잡은 뒤(pivot) 나머지 요소들은 partitioning 해준다.

  • 배열이 어떤 규칙에 의해서 정렬이 되어있다고 가정한다.

  • left, right 포인터를 설정하고, 그 중간이 되는 pivot 포인터를 찾는다.

  • pivot 포인터가 가리키는 값와 타겟 수가 같다면 리턴하고

  • 작다면, right 포인터를 pivot + 1 로 옮겨주고

  • 크다면, left 포인터를 pivot -1 로 옮겨준다.

Last updated