Sắp xếp vun đống
Sắp xếp vun đống (heapsort) là một trong các phương pháp sắp xếp chọn. Ở mỗi bước của sắp xếp chọn ta chọn phần tử lớn nhất (hoặc nhỏ nhất) đặt vào cuối (hoặc đầu) mảng, sau đó tiếp tục với phần còn lại của mảng.
Thông thường sắp xếp chọn chạy trong thời gian O(n2). Nhưng heapsort đã giảm độ phức tạp này bằng cách sử dụng một cấu trúc dữ liệu đặc biệt được gọi là đống (heap). Thuật toán tốn thời gian là O(n*log(n)).
Thuật toán
Đầu tiên là vun đống của mảng dữ liệu. Tiếp theo là lấy phần tử lớn nhất rồi đưa phần tử đó vào cuối mảng. Sau khi lấy được phần tử lớn nhất đầu tiên, ta sắp xếp đống còn lại. Rồi tiếp tục lấy phần tử lớn nhất tiếp theo. Tiếp tục đến hết mảng.
Hàm insertHeap()
và hàm deleteMaxHeap()
đã đề cập ở cấu trúc dữ liệu heap.
|
|