You are on page 1of 6

Topic 6

THUẬT TOÁN SẮP XẾP

1
Mục tiêu

• Các thuật toán sắp xếp phổ biến: Selection sort,


Quick sort và Insertion sort
• Triển khai các thuật toán này sử dụng ngôn
ngữ lập trình Java

2
Danh sách các thuật toán xắp sếp

1. Selection sort
2. Quick sort
3. Insertion sort

3
Selection sort

• Giải thuật
Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử
này về vị trí đúng là đầu tiên của dãy hiện hành. Sau đó
không quan tâm đến nó nữa, xem dãy hiện hành chỉ còn n-1
phần tử của dãy ban đầu, bắt đầu từ vị trí thứ 2. Lặp lại quá
trình trên cho dãy hiện hành đến khi dãy hiện hành chỉ còn 1
phần tử. Dãy ban đầu có n phần tử, vậy tóm tắt ý tưởng thuật
toán là thực hiện n-1 lượt việc đưa phần tử nhỏ nhất trong
dãy hiện hành về vị trí đúng ở đầu dãy.

4
Quick sort

• Còn được gọi là sắp xếp kiểu phân chia (part sort) là một
thuật toán sắp xếp phát triển bởi C.A.R. Hoare, dựa trên
phép phân chia danh sách được sắp thành hai danh sách con.
Khác với sắp xếp trộn, chia danh sách cần sắp xếp a[1..n]
thành hai danh sách con có kích thước tương đối bằng nhau
nhờ chỉ số đứng giữa danh sách, sắp xếp nhanh chia nó
thành hai danh sách bằng cách so sánh từng phần tử của
danh sách với một phần tử được chọn được gọi là phần tử
chốt. Những phần tử nhỏ hơn hoặc bằng phần tử chốt được
đưa về phía trước và nằm trong danh sách con thứ nhất, các
phần tử lớn hơn chốt được đưa về phía sau và thuộc danh
sách đứng sau. Cứ tiếp tục chia như vậy tới khi các danh
sách con đều có độ dài bằng 1.

5
Insertion sort

• Thuật toán sắp xếp chèn làm việc cũng giống như tên gọi - Nó
thực hiện việc quét một tập dữ liệu, với mỗi phân tử, thủ tục
kiểm tra và chèn phần tử đó vào vị trí thích hợp trong danh sách
đích (chứa các phần tử đứng trước nó đã được sắp xếp) được
tiến hành.
• Phương pháp dễ dàng nhất để thực hiện thuật toán này là dùng
hai vùng chứa dữ liệu khác nhau - tập dữ liệu nguồn và tập dữ
liệu mà các phần tử đã sắp xếp được chèn vào. Tuy nhiên để tiết
kiệm bộ nhớ, hầu hết các ứng dụng đều chỉ sử dụng một tập dữ
liệu duy nhất. Thuật toán được tiến hành bằng cách dịch chuyển
phân tử hiện tại đang xét tuần tự qua những phân tử ở vùng dữ
liệu phía trước đã được sắp xếp, phép hoán vị nó với phần tử
liền kề được thực hiện một cách lặp lại cho tới khi tiến tới được
vị trí thích hợp.
6

You might also like