2011-11-17 11 views

Trả lời

5

Khi tất cả các phần tử bằng nhau xây dựng heap có O (n) bước. Bởi vì khi phần tử được thêm vào heap sau khi so sánh O (1), chúng ta thấy nó ở đúng vị trí.

Xóa gốc cũng là O (1), khi chúng tôi trao đổi đuôi và gốc, thuộc tính heap vẫn hài lòng.

Tất cả các phần tử được thêm vào heap trong O (n) và được loại bỏ trong O (n). Vì vậy, có trong trường hợp này trường hợp heapsort là O (n). Tôi không thể nghĩ ra một trường hợp tốt hơn vì vậy trường hợp tốt nhất heapsorts phải là O (n).

'Trường hợp tốt nhất Heapsorts là O (n)' có nghĩa là trong tiếng Anh một cái gì đó như: có tồn tại mảng kích thước n sao cho heapsort cần nhiều nhất k * n so sánh để sắp xếp nó. Đó là tốt đẹp trong lý thuyết nhưng trong thực tế nó không nói nhiều về cách heapsort tốt hay nhanh là.

+0

Cảm ơn .. Ishtar – rakesh

+0

Điều này KHÔNG đúng! xem http://stackoverflow.com/questions/4589988/lower-bound-on-heapsort – Cheng

+0

@Cheng, Câu hỏi này là về ** trường hợp ** tốt nhất, câu hỏi bạn đã liên kết là về ** trường hợp xấu nhất **. Như tôi đã chỉ ra, trường hợp tốt nhất là không thực sự có liên quan .. Nếu bạn có đề xuất làm thế nào để cải thiện câu trả lời của tôi xin vui lòng cho tôi biết. – Ishtar