Tải bản đầy đủ (.ppt) (28 trang)

Chương 3: Giải thuật sắp xếp (SelectionSort,InsertSort..)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 28 trang )


Chương 3: SẮP XẾP
GV. Vũ Thị Thúy Vi
Trường CĐCĐ Sóc Trăng 2008

2
Chương 3: Sắp xếp
Chương 3: Sắp xếp
NỘI DUNG
3.1 Bài toán sắp xếp
3.2 Sắp xếp chọn
3.3 Sắp xếp xen
3.4 Sắp xếp nổi bọt
3.5 Quicksort
3.6 Heapsort
3.7 Binsort
3.8 Tổng kết chương 3
Là các giải thuật
đơn giản thường
lấy O(n
2
) thời
gian để sắp xếp n
đối tượng
Các giải thuật
này thường chỉ
dùng để sắp các
danh sách có ít
đối tượng.

3


3.1 Bài toán sắp xếp
 Tầm quan trọng của bài toán sắp xếp






4
3.1 Bài toán sắp xếp

5
3.1 Bài toán sắp xếp
 Tổ chức dữ liệu và ngôn ngữ cài đặt

6
3.1 Bài toán sắp xếp
Sắp xếp trong Sắp xếp ngoài
là sự sắp xếp dữ liệu được tổ
chức trong bộ nhớ trong của
máy tính, ở đó ta có thể sử
dụng khả năng truy nhập ngẫu
nhiên của bộ nhớ và do vậy sự
thực hiện rất nhanh
là sự sắp xếp được sử dụng khi
số lượng đối tượng cần sắp xếp
lớn không thể lưu trữ trong bộ
nhớ trong mà phải lưu trữ trên
bộ nhớ ngoài. Cụ thể là ta sẽ
sắp xếp dữ liệu được lưu trữ

trong các tập tin.

7
INPUT: Số nguyên dương n và dãy n số
nguyên a
1
, a
2
, …, a
n
(a
i
với i: 1→n).
OUTPUT: Dãy n số nguyên a
1
, a
2
, …, a
n
đã
được sắp xếp theo thứ tự tăng dần.
Xác định bài toán sắp xếp

8
Các phương pháp sắp xếp
Giải thuật
và Ví dụ minh họa
Tóm tắt giải thuật
Chương trình
Phân tích đánh giá


9
3 5 9 8 1 7
Sắp xếp một dãy số nguyên A gồm 6 số nguyên sau:
3 5 9 8 1 7
B1
chọn phần tử có khóa nhỏ nhất trong 6 phần tử
từ a[1] đến a[6] và hoán vị nó với phần tử a[1]
3.2 Sắp xếp chọn
1
1
31 5 9 8 3 7
3
1 5 9 8 3 7
3
3
1 3 9 8 5 7
5
B2
chọn phần tử có khóa nhỏ nhất trong 5 phần tử từ
a[2] đến a[6] và hoán vị nó với phần tử a[2]
1 3 9 8 5 7
5
9
1 3 5 8 9 7
B3
1 3 5 8 9 7
chọn phần tử có khóa nhỏ nhất trong 4 phần tử từ
a[3] đến a[6] và hoán vị nó với phần tử a[3]
7

B4
chọn phần tử có khóa nhỏ nhất trong 3 phần tử từ
a[4] đến a[6] và hoán vị nó với phần tử a[4]
1 3 5 8 9 7
7
8
1 3 5 7 9 8
B5
chọn phần tử có khóa nhỏ nhất
trong 2 phần tử từ a[5] đến a[6]
và hoán vị nó với phần tử a[5]
88 9
1 3 5 7 8 9
Giải thuật và Ví dụ minh họa

10
Tóm tắt giải thuật sắp xếp chọn
Chọn phần tử có khóa nhỏ nhất trong n phần tử từ
a[1] đến a[n] và hoán vị nó với phần tử a[1]
B1
Chọn phần tử có khóa nhỏ nhất trong n-1 phần tử từ
a[2] đến a[n] và hoán vị nó với phần tử a[2]
B2

Chọn phần tử có khóa nhỏ nhất trong n-i+1 phần tử
từ a[i] đến a[n] và hoán vị nó với phần tử a[i]
Bi
 Sau n-1 bước này thì mảng đã được sắp xếp

11

Chương trình
PROCEDURE SelectionSort;
VAR i,j,LowIndex: integer;
BEGIN
{1} FOR i := 1 TO n-1 DO
BEGIN
{2} LowIndex := i;
{3} FOR j := i+1 TO n DO
{4} IF a[j].key < a[LowIndex] THEN
{5} LowIndex := j;
{6} Swap(a[i],a[LowIndex]);
END;
END;

×