Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG THÀNH PHỐ HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÀI BÁO CÁO

THUẬT TOÁN SẮP XẾP VUN ĐỐNG


HEAP SORT
GVHD: Ths. Trần Quang Huy
Nhóm thực hiện: Nhóm 6, Lớp 14DHTH08
1. Trần Tấn Phát 19
2. Lê Thiên Phú 21
3. Nguyễn Phạm Minh Quân 23

TP. HỒ CHÍ MINH, THÁNG 11 NĂM 2023


TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP. HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN PHẠM MINH QUÂN, TRẦN TẤN PHÁT, LÊ THIÊN PHÚ

THUẬT TOÁN SẮP XẾP VUN ĐỐNG


HEAP SORT

TIỂU LUẬN MÔN THỰC HÀNH NGUYÊN LÍ

NGÔN NGỮ LẬP TRÌNH

GVHD: Ths. Trần Quang Huy

THÀNH PHỐ HỒ CHÍ NĂM, THÁNG 12 NĂM 2023


MỤC LỤC

I. KHÁI NIỆM HEAP SORT................................................................................................................................................................... 4

A. Cây nhị phân hoàn chỉnh (Complete Binary tree)..............................................................................................................................4

B. HEAP SORT................................................................................................................................................................................ 5

II. CÁCH HOẠT ĐỘNG THUẬT TOÁN HEAP SORT.............................................................................................................................6

A. Thao tác Heapify........................................................................................................................................................................... 6

B. Thuật toán Heapify........................................................................................................................................................................ 7

III. CÀI ĐẶT THUẬT TOÁN HEAP SORT............................................................................................................................................... 8

A. Cài đặt thuật toán Max Heap.......................................................................................................................................................... 8

B. Cài đặt thuật toán Min Heap........................................................................................................................................................... 8


MỤC LỤC ẢNH
Hình A. Ví dụ minh họa về Cây Nhị Phân Hoàn Chỉnh.......................................................................................................................................... 4
Hinh 1.1 Ví dụ về cách xây dựng Cây Nhị Phân Hoàn Chỉnh..................................................................................................................................5
LỜI MỞ ĐẦU
CHƯƠNG 1: KHÁI NIỆM HEAP SORT

I. KHÁI NIỆM HEAP SORT

A. Cây nhị phân hoàn chỉnh (Complete Binary tree)

Cây nhị phân hoàn chỉnh là cây nhị phân được lấp đầy hoàn toàn tất cả các cấp (Lever) trừ cấp thấp nhất và được điền từ

trái sang phải.

Cây nhị phân hoàn chỉnh gồm:

+)_Một đỉnh đơn lẻ còn gọi là gốc (Root) hoặc nút cha.

+) Một cây có đỉnh đơn lẻ có nhiều nhất hai nút con, được gọi là con trái (Left Child) và con phải (Right Child), hai nút

con có thể thêm nhiều nút con khác và các nút con của nút con ban đầu còn được gọi là lá (Leaf).

Hình A. Ví dụ minh họa về Cây Nhị Phân Hoàn Chỉnh

+Xây dựng một cây nhị phân hoàn chỉnh:

Nếu chỉ số của một phần tử trong mảng là I thì:

+) Nút con trái (Left Child) sẽ có chỉ số là : 2i+1.

+) Nút con phải (Right Child) sẽ có chỉ số là : 2i+2.

+) Nút cha (Root) : (i-1)/2.


CHƯƠNG 1: KHÁI NIỆM HEAP SORT

B. HEAP SORT

Heap sort chính là một cây nhị phân hoàn chỉnh.

Tất cả các nút trong cây đều tuân theo thuộc tính đó là chúng lớn hơn phần tử con của chúng, tức là phần tử lớn nhất nằm ở gốc.

+) Trong trường hợp nút cha lớn hơn các nút con của nó thì ta có MAX-HEAP

+) Trong trường hợp nút cha bé hơn các nút con của nó thì ta có MIN-HEAP.

Ví dụ:

Hình B.2 Ví dụ về Min Heap Hình B.1 Ví dụ về Max Heap


CHƯƠNG 2: CÁCH HOẠT ĐỘNG THUẬT TOÁN HEAP SORT

II. CÁCH HOẠT ĐỘNG THUẬT TOÁN HEAP SORT

A. Thao tác Heapify

Heapify là một thao tác quan trọng trong thuật toán HeapSort và được sử dụng trong các thao tác khác liên quan đến cấu trúc dữ liệu

heap.Nhiệm vụ của heapify là chuyển đổi một cây nhị phân heap, tức là đảm bảo tính chất heap (lớn hơn hoặc bằng giá trị của nút cha) được

thỏa mãn.

Quá trình Heapify thường được thực hiện bằng cách xem xét từng nút trong cây nhị phan và kiểm tra tính chất heap của nút đó và các nút

con của nó. Nếu tính chất heap không được thảo mãn, các nút sẽ được hoán đổi chỗ để đảm bảo tính chất heap.

B. Thuật toán Heapify


Bước 1: Vì cây thỏa mãn thuộc tính Max Heap, nên mục lớn nhất được lưu trữ tại nút gốc.
Bước 2: Hoán đổi: Loại bỏ phần tử gốc và đặt ở cuối mảng
Bước 3: Giảm kích thước của Heap đi 1.

Bước 4: Heapify: Heapify lại phần tử gốc để chúng ta có phần tử cao nhất ở gốc.
CHƯƠNG 2: CÁCH HOẠT ĐỘNG THUẬT TOÁN HEAP SORT

Bước 5: Quá trình này được lặp lại cho đến khi tất cả các mục danh sách được sắp xếp.
CHƯƠNG 3: CÀI ĐẶT THUẬT TOÁN HEAP SORT

III. CÀI ĐẶT THUẬT TOÁN HEAP SORT


A. Cài đặt thuật toán Max Heap

B. Cài đặt thuật toán Min Heap

You might also like