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

Một phần của tài liệu cau truc du lieu va giai thuat giaotrinh cuuduongthancong com (Trang 95 - 96)

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ẽ mang lại hiệu quả hơn.

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.

Một phần của tài liệu cau truc du lieu va giai thuat giaotrinh cuuduongthancong com (Trang 95 - 96)

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

(153 trang)