본문 바로가기

알고리즘

퀵정렬

  • Divide and Conquer paradigm 사용
    • Partitioning

      어떤 pivot이라고 하는 element 기준으로

      왼쪽은 작거나 같은것 오른쪽은 같거나 큰것

      이것을 재귀로 호출

  • 퀵 정렬은 pivot을 어떻게 잡느냐에 따라 성능에 영향을 미침.
  • Soudo code

    QuickSort(A,p,r)

    If p<r // 배열의 크기가 2보다 큰동안 1이되면 종료

    q=Partion(A,p,r)

    QuickSort(A,p,q-1) //재귀

    QuickSotr(A,q+1,r) //재귀

       

  • 퀵소트 수행시간
    • Θ(n) //파티셔닝은 몇번하느냐에 따라 성능 달라짐
    • 크게 두가지 경우
      • balanced 파티셔닝 : 각 하위 문제의 크기가 절반정도가 될 경우

        O(nlgn)

      • unbalanced 파티셔닝 :
  • 최악의 시간
    • Subtitution

       

  • 최악의 경우를 피하기 위해 배열에서 pivot을 무작위로 선택

'알고리즘' 카테고리의 다른 글

힙정렬 구현  (0) 2016.11.13
힙정렬  (0) 2016.11.13
합병정렬  (0) 2016.11.13
정렬  (0) 2016.11.13
그래프 알고리즘  (0) 2016.04.18