Tải bản đầy đủ (.pptx) (119 trang)

Bài giảng cấu trúc dữ liệu và giải thuật chương 2 tìm kiếm và sắp xếp trên mảng 1 chiều phần 2

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 (492.7 KB, 119 trang )

Trần Minh Thái
Email:
Website: www.minhthai.edu.vn
1
Chương 2.2. Giải thuật
sắp xếp
Mục tiêu

Nắm vững, minh họa và tính toán được các
phép gán (hoán vị) các giải thuật sắp xếp cơ
bản trên mảng một chiều

Cài đặt được các giải thuật bằng ngôn ngữ
C/C++
2
Các khái niệm

Sắp xếp là quá trình xử lý một danh sách các phần tử
(hoặc các mẫu tin) để đặt chúng theo một thứ tự thỏa
mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin
lưu giữ tại mỗi phần tử.

Khái niệm nghịch thế
Giả sử xét mảng có thứ tự tăng dần, nếu có i<j và
ai>aj thì ta gọi đó là nghịch thế.
Mục tiêu của sắp xếp là khử các nghịch thế (bằng
cách hoán vị)
3
a1 a2 a3 a4 … … aN-
2
aN-


1
aN
Các giải thuật sắp xếp cơ bản

Đổi chổ trực tiếp – Interchange Sort

Chọn trực tiếp – Selection Sort

Chèn trực tiếp – Insertion Sort

Nổi bọt – Bubble Sort

Quick Sort

Một số giải thuật khác đọc thêm trong tài liệu
4
Đổi chổ trực tiếp – interchange sort

Ý tưởng
Ý tưởng chính của giải thuật là xuất phát từ đầu
dãy, tìm tất cả nghịch thế chứa phần tử này, triệt
tiêu chúng bằng cách đổi chỗ phần tử này với
phần tử tương ứng trong cặp nghịch thế. Lặp lại
xử lý trên với các phần tử tiếp theo trong dãy.
5
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
6
10
5

7
3
9
2
15
1
Giả sử cần sắp xếp dãy số sau tăng dần
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
7
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
i
7
3
9
2
15
1
j
10
5
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
8
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
3
9
2

15
1
j
5
7
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
9
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
7
9
2
15
1
j
5
3
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
10
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
5
7
2
15
1

j
3
9
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
11
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
5
7
9
15
1
j
3
2
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
12
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
5
7
3
9
1
j
2

15
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
13
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
5
7
3
9
j
2
15
1
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
14
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)
10
i
5
7
3
9
2
15
1
j
1

Kết thúc
bước 1
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
15
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
i
5
3
9
2
15
1
j
1
10
7
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
16
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
3
9
2
15
1
j
1

5
7
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
17
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
7
3
2
15
1
j
1
5
9
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
18
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
7
9
2
15
1
j
1

5
3
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
19
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
5
7
9
2
1
j
1
3
15
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
20
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
5
7
9
15
1
j
1

3
2
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
21
Bước 2: Xét phần tử thứ hai (tại vị trí 2)
10
i
5
7
3
9
2
15
1
j
1
Kết thúc
bước 2
2
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
22
Bước 3: Xét phần tử thứ ba (tại vị trí 3)
i
5
3
9
2
15

1
j
1
2
10
7
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
23
10
i
5
3
2
15
1
j
1
2
Bước 3: Xét phần tử thứ ba (tại vị trí 3)
7
9
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
24
10
i
3
9
2

15
1
j
1
2
Bước 3: Xét phần tử thứ ba (tại vị trí 3)
5
7
1 2 3 4 5 6 7 8
Đổi chổ trực tiếp – interchange sort
25
10
i
7
3
9
2
1
j
1
2
Bước 3: Xét phần tử thứ ba (tại vị trí 3)
5
15

×