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

SLIDE BÀI GIẢNG CHƯƠNG 2 THUẬT TOÁN TÌM KIẾM

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 (740.99 KB, 114 trang )

Chương 2.2. Giải thuật sắp xếp

Trần Minh Thái
Email:
Website: www.minhthai.edu.vn

1


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ị)
a1

a2

a3

a4





aN-2

aN-1

aN

3


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


Đổi chổ trực tiếp – interchange sort
Giả sử cần sắp xếp dãy số sau tăng dần

10
10
1

5
2

5

7
3

9
7

3
4

3
5


15
15
9

2
6

1

2
7

8

1

6


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

10
10
1

5
2

5


7
3

9
7

3
4

3
5

15
15
9

2
6

1

2
7

8

1

7


i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

5
1

10
10
5
2

7
3

9
7

3
4

3
5

15

15
9

2
6

1

2
7

8

1

8

i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

5
1

10
10

5
2

7
3

9
7

3
4

3
5

15
15
9

2
6

1

2
7

8

1


9

i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

10
10
3
1

7

3
2

3

7

5
4

9
5

5

15
15
9

2
6

1

2
7

8

1

10

i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

10
10

3
1

7

3
2

3

7

5
4

9
5
5

15
15
9

2
6

1

2
7


8

1

11

i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

10
10
2
1

7

2
2

3

7

5

4

9
5
5

15
15
9

3
6

3

1
7

8

1

12

i

j


Đổi chổ trực tiếp – interchange sort

Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

10
10
2
1

7

2
2

3

7

5
4

9
5
5

15
15
9

3
6


3

1
7

8

1

13

i

j


Đổi chổ trực tiếp – interchange sort
Bước 1: Xét phần tử đầu tiên (tại vị trí 1)

Kết thúc bước 1

10
10
1
1

1

2


7
3

7

5
4

9
5
5

15
15
9

3
6

2

3
7

2

8

14


i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

10
10
1
1

1

2

7
3

7

5
4

9
5
5

15

15
9

3
6

2

3
7

2

8

15

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

7
1
1

1


2

7

10
10
3

5
4

9
5
5

15
15
9

3
6

2

3
7

2


8

16

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

1
1

5
1

2

10
10
5
3

7
4

9
7

5

15
15
9

3
6

2

3
7

2

8

17

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

1
1


5
1

2

10
10
5
3

7
4

9
7
5

15
15
9

3
6

2

3
7


2

8

18

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

10
10
1
1

1

3
2

7

3
3

4


9
7
5

15
15
9

5
6

2

5
7

2

8

19

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)


10
10
1
1

1

3
2

7

3
3

4

9
7
5

15
15
9

5
6

2


5
7

2

8

20

i

j


Đổi chổ trực tiếp – interchange sort
Bước 2: Xét phần tử thứ hai (tại vị trí 2)

Kết thúc bước 2

10
10
1
1

1

2
2


7

2
3

4

9
7
5

15
15
9

5
6

3

5
7

3

8

21

i


j


Đổi chổ trực tiếp – interchange sort
Bước 3: Xét phần tử thứ ba (tại vị trí 3)

10
10
1
1

1

2
2

7

2
3

4

9
7
5

15
15

9

5
6

3

5
7

3

8

22

i

j


Đổi chổ trực tiếp – interchange sort
Bước 3: Xét phần tử thứ ba (tại vị trí 3)

1
1

1

2

2

7
2
3

7

10
10
4

9

5

15
15
9

5
6

3

5
7

3


8

23

i

j


Đổi chổ trực tiếp – interchange sort
Bước 3: Xét phần tử thứ ba (tại vị trí 3)

1
1

1

2
2

7
2
3

7

10
10
4


9

5

15
15
9

5
6

3

5
7

3

8

24

i

j


Đổi chổ trực tiếp – interchange sort
Bước 3: Xét phần tử thứ ba (tại vị trí 3)


1
1

1

2
2

2

5
3

10
10

9

5
4

5

15
15
9

7
6


7

3
7

3

8

25

i

j


×