Chương 5 : Các thuật toán sắp xếp
Trnh Anh Phúc 1
1Bộ môn Khoa Học Máy Tính, Viện CNTT & TT,
Trường Đại Học Bách Khoa Nội.
Ngày 5 tháng 3 năm 2014
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy nh, Vin CNTT & TT, Trưng Đi Hc Bách Khoa Hà Ni. )Cấu trúc dữ liệu giải thuật Ngày 5 tháng 3 năm 2014 1 / 92
CuuDuongThanCong.com
Giới thiệu
1Bài toán sắp xếp
2Ba thuật toán sắp xếp bản
3Sắp xếp trộn
4Sp xếp nhanh
5Sắp xếp vun đống
6Cận dưới cho bài toán sắp xếp
7Tng kết
8Các phương pháp sắp xếp đặc biệt
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy nh, Vin CNTT & TT, Trưng Đi Hc Bách Khoa Hà Ni. )Cấu trúc dữ liệu giải thuật Ngày 5 tháng 3 năm 2014 2 / 92
CuuDuongThanCong.com
Bài toán sắp xếp
Định nghĩa bài toán sắp xếp
Sắp xếp (Sorting) quá trình tổ chức lại họ các dữ liệu theo thứ tự giảm
dần hoặc tăng dần (ascending or descending order). Dữ liệu cần sắp xếp
thể :
S nguyên (Intergers)
Xâu tự (String)
Đối tượng (Object)
Ta cần khóa sắp xếp (sort key) dùng để phân biệt các dữ liệu với nhau.
Khóa này duy nht cho từng d liu đưc dùng đ sp xếp. Lưu ý,
không có khóa trùng lp cho hai d liu phân bit chính bi vậy các giải
thuật sắp xếp mới thực hiện được.
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy nh, Vin CNTT & TT, Trưng Đi Hc Bách Khoa Hà Ni. )Cấu trúc dữ liệu giải thuật Ngày 5 tháng 3 năm 2014 3 / 92
CuuDuongThanCong.com
Bài toán sắp xếp
u ý khi biểu diễn bài toán sắp xếp trong y tính
Việc sắp xếp tiến hành trực tiếp trên bản ghi dữ liệu đòi hỏi các thao
tác di chuyển tốn kém.
vậy người ta thường xây dựng một bảng khóa gồm các bản ghi chỉ
gm hai trưng là (khóa, con tr) :
trường "khóa" chứa giá trị khóa
trường "con trỏ" chứa địa chỉ trỏ đến các bản ghi dữ liệu tương ứng
Việc sắp xếp theo khóa trong bảng khóa trên không đòi hỏi di chuyển
các bản ghi dữ liệu - trong bảng chính, nhưng trình tự các bản ghi
trong bng khóa cho phép c đnh trình tự các bn ghi d liu trong
bản chính.
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy nh, Vin CNTT & TT, Trưng Đi Hc Bách Khoa Hà Ni. )Cấu trúc dữ liệu giải thuật Ngày 5 tháng 3 năm 2014 4 / 92
CuuDuongThanCong.com
Bài toán sắp xếp
tả giải thuật của bài toán sắp xếp
Đầu vào : Dãy gồm nkhóa A= (a1,a2,· · · ,an)
Đầu ra : Một hoán vị của dãy A y A= (a
1,a
2,· · · ,a
n)sao cho
dãy tha mãn
a
1a
2 · · · a
n
Độ quan trọng của thuật toán sắp xếp
40% thời gian hoạt động của y tính dành cho
việc sắp xếp - D.Knuth
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy nh, Vin CNTT & TT, Trưng Đi Hc Bách Khoa Hà Ni. )Cấu trúc dữ liệu giải thuật Ngày 5 tháng 3 năm 2014 5 / 92
CuuDuongThanCong.com