Tải bản đầy đủ (.pdf) (115 trang)

Bài giảng cấu trúc dữ liệu chương 2 (tt) ths võ quang hoàng khang

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.81 MB, 115 trang )

CHƯƠNG

2.(TT)

GIẢI THUẬT SẮP XẾP
Võ Quang Hoàng Khang
Email:
1


Mục tiêu
 Nắm vững, minh họa và tính tố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


Khái niệm
 Sắp xếp là quá trình xử lý một danh sách các phần tử
để đặt chúng theo một thứ tự thỏa mãn một tiêu chí
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ế
a1

a2



a3

a4





aN-2 aN-1 aN

Giả sử xét mảng có thứ tự tăng dần, nếu có iai>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


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
1

5

7

2


3

3
4

15

9
2
5

6

1
7

8
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
1

5

7


2

3

3
4

15

9
2
5

6

1
7

8
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
2

7
3

3
4

15

9
2
5

6

1
7

8
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
2

7
3

3
4

15

9
2
5

6

1
7

8
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
3
1

2

7

5

3

4

15

9
2
5

6


1
7

8
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
3
1

2

7

5

3

4

15


9
2
5

6

1
7

8
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
2
1

2

7

5


3

4

9
5

15
3
6

1
7

8
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
2
1

2


7

5

3

4

9
5

15
3
6

1
7

8
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
1
1

2

7

5

3

4

9
5

15
3
6

2
7

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
1
1

2

7

5

3

4

9
5

15
3
6

2

7

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)

1
1

7
2

10
3

5
4

9
5

15
3

6

2
7

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
2

10
3

7

9

4


5

15
3
6

2
7

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
2

10
3


7

9

4

5

15
3
6

2
7

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
1

3


1

2

3

7

9

4

5

15
5
6

2
7

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
1

3

1

2

3

7

9

4

5

15
5
6

2
7

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
1

2

1

2

3

7

9

4


5

15
5
6

3
7

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
1

2

1

2

3


7

9

4

5

15
5
6

3
7

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

2


1

2

7
3

10
4

9
5

15
5
6

3
7

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

2

1

2

7
3

10
4

9
5

15
5
6

3
7

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

2

5

1

2

3

10
4

15

9

7

5


6

3
7

8
25

i

j


×