2017-09-12 1 views
1

첫 번째 요소에서 항상 피벗하는 표준 양방향 파티션 QuickSort 알고리즘이 있다고 가정합니다. 그러나 QuickSort의이 작은 변형에서 먼저 첫 번째 요소와 중간 요소를 교환 한 다음 '새로운'첫 번째 요소를 피벗합니다. 내 질문은 이것이 최악의 실행 시간을 바꿀 것인가하는 것입니다.각 파티션의 가운데와 첫 번째 요소를 바꿔 넣은 퀵 포트

초기 생각은 각각의 하위 배열에서와 마찬가지로 요소가 서로 상대적으로 임의의 순서로 유지되므로 첫 번째 요소와 중간 요소를 전환해도 전반적인 런타임은 변경되지 않습니다. 그러나 최악의 시나리오를 찾는 데 관심이 있으므로이 약간의 변형으로 인해 원래 알고리즘의 최악의 런타임을 변경하는 특수 배열이 있는지 확실하지 않습니다.

답변

1

퀵소트의 최악의 경우는 피벗이 항상 최소 또는 최대 일 때입니다. 이를 염두에두고,하면 최악의 배열을 구축 할 수

  • [1, 2] (두 소자 어레이의 모든 요소는 맥스 분 또는)
  • [3, 1, 2] 포스트 스왑 위에서
  • [1, 3, 2] 미리 스왑
  • [4, 1, 3, 2] 이후 스왑 상기
  • [1, 4, 3, 2] 미리 생성 생산 -swap
  • 스왑 후 [5, 1, 4, 3] 스왑은 위의 값을 생성합니다.
  • [4, 1, 5, 3] pre-swap
  • [6, 4, 1, 5, 3, 2] 이후 스왑 상기
  • [1, 4, 6, 5, 3, 2] 미리 스왑
생산
관련 문제