BÀI TOÁN SẮP XẾ P

Một phần của tài liệu Bài giảng cấu trúc dữ liệu và giải thuật (2013) (Trang 97 - 98)

Sắp xếp là quá trình bố trí lại các phần tử của 1 tập hợp theo thứ tự nào đó. Mục đích chính của sắp xếp là làm cho thao tác tìm kiếm phần tử trên tập đó được dễ dàng hơn. Ví dụ về tập các đối

tượng được sắp phổ biến trong thực tế là: danh bạ điện thoại được sắp theo tên, các từ trong từ điển

được sắp theo vần, sách trong thư viện được sắp theo mã số, theo tên, .v.v.

Nhìn chung, có rất nhiều thao tác xử lý dữ liệu cần đến việc sắp xếp các phần tử dữ liệu theo trình tự nào đó. Trên thực tế, sắp xếp là một thao tác khá đơn giản. Tuy nhiên, như chúng ta sẽ thấy, có rất nhiều giải thuật sắp xếp khác nhau, từ đơn giản tới phức tạp. Và các kỹ thuật được sử dụng trong các giải thuật sắp xếp này được nghiên cứu và phân tích nhiều hơn là chính bản thân giải thuật sắp xếp. Các kỹ thuật này được coi là cơ sở để xây dựng nhiều giải thuật quan trọng khác. Do đó, các

thuật toán sắp xếp được trình bày và phân tích kỹ trong hầu hết các tài liệu về giải thuật.

Các giải thuật sắp xếp còn là một ví dụ điển hình cho sự đa dạng của thuật toán. Cùng một mục

đích, nhưng có rất nhiều cách thực hiện, mỗi cách tối ưu trên một khía cạnh nào đó, và có một số

cách sắp xếp có nhiều ưu điểm hơn những cách khác. Do đó, sắp xếp cũng được sử dụng như một ví dụ điển hình trong việc phân tích thuật toán.

Thông thường, các giải thuật sắp xếp được chia làm 2 loại. Loại thứ nhất là các giải thuật được

cài đặt đơn giản, nhưng không hiệu quả (phải sử dụng nhiều thao tác). Loại thứ hai là các giải thuật

được cài đặt phức tạp, nhưng hiệu quả hơn về mặt tốc độ (dùng ít thao tác hơn). Đối với các tập dữ

liệu ít phần tử, tốt nhất là nên lựa chọn loại thứ nhất. Đối với tập có nhiều phần tử, loại thứ hai sẽ

91

Các đối tượng dữ liệu cần sắp xếp thường có nhiều thuộc tính, và ta cần chọn một thuộc tính làm khóa để sắp xếp dữ liệu theo khóa này. Ví dụ, đối tượng về người thường có các thuộc tính cơ

bản như họ tên, ngày sinh, giới tính, v.v., tuy nhiên họ tên thường được chọn làm khóa để sắp xếp. Tham số để tính toán hiệu quả của giải thuật thường là thời gian thực hiện. Đối với các phương

pháp sắp xếp đơn giản, thời gian thực hiện (số thao tác thực hiện) tỷ lệ với N2, trong đó N là số phần tử của tập. Các giải thuật sắp xếp phức tạp và tinh xảo hơn có thời gian thực hiện tỷ lệ với NlogN.

Người ta chứng mình được rằng, không có giải thuật nào có thể có thời gian thực hiện nhỏ hơn

NlogN. Ngoài thời gian thực hiện, dung lượng bộ nhớ bị chiếm cũng là một tham số để đánh giá tính

hiệu quả của giải thuật.

Một vấn đề nữa cần phải chú ý khi thực hiện sắp xếp, đó là tính ổn định của giải thuật sắp xếp. Một giải thuật được gọi là ổn định nếu sau khi sắp xếp, nó giữ nguyên vị trí của các phần tử có cùng giá trị khóa. Chẳng hạn, với danh sách theo vần họ tên các sinh viên trong một lớp. Nếu ta tiến hành sắp danh sách này theo điểm, thì các sinh viên có cùng điểm vẫn được sắp theo vần họ tên. Hầu hết các giải thuật sắp xếp đơn giản có tính ổn định, trong khi các giải thuật tinh xảo hơn lại không có tính chất này.

7.2 CÁC GIẢI THUẬT SẮP XẾP ĐƠN GIẢN 7.2.1 Sắp xếp chọn

Một phần của tài liệu Bài giảng cấu trúc dữ liệu và giải thuật (2013) (Trang 97 - 98)

Tải bản đầy đủ (PDF)

(189 trang)