Quicksort có luôn có thời gian chạy bậc hai nếu bạn chọn một phần tử tối đa làm trục không?


9

Nếu bạn có thuật toán sắp xếp nhanh và bạn luôn chọn phần tử nhỏ nhất (hoặc lớn nhất) làm trục của mình; Tôi có đúng không khi cho rằng nếu bạn cung cấp một tập dữ liệu đã được sắp xếp, bạn sẽ luôn nhận được hiệu suất trong trường hợp xấu nhất bất kể danh sách 'đã được sắp xếp' của bạn theo thứ tự tăng dần hay giảm dần?

Tôi nghĩ rằng, nếu bạn luôn chọn phần tử nhỏ nhất cho trục của mình, thì liệu đầu vào 'đã được sắp xếp' của bạn được sắp xếp theo tăng dần hay giảm dần không thành vấn đề bởi vì tập hợp con được chọn để sắp xếp theo trục của bạn sẽ luôn là cùng cỡ?


2
Suy nghĩ của bạn là chính xác, nhưng bạn cũng có thể tranh luận trực tiếp và tính toán thời gian chạy quicksort trong trường hợp này - bạn sẽ nhận được . O(n2)
Yuval Filmus

Câu trả lời:


15

Θ(n2)


2
Tốt hơn là viết nó: "... Điều này đạt được bằng cách chọn các pivots chia tập hợp sao cho một nhóm chỉ có thành viên O (1)"

@Saeed Amiri: Đúng vậy, nhưng tốt hơn là chính xác.
MMS

1
@SaeedAmiri: O (1) chỉ ra rằng nó tỷ lệ với 1, có nghĩa là nó có thể là k * 1. Trường hợp xấu nhất thực tế đạt được khi chính xác là 1. Tôi sẽ cấp cho bạn rằng O (1) vẫn có thể dẫn đến O (n ^ 2).
walrii

O(1)Θ(n2)Θ(n2)Θ(n2)


3

01(n1)O(n2)

t(n)=t(n1)+t(0)+O(n)=O(n2)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.