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

Bài giảng cấu trúc dữ liệu và giải thuật chương 3 đh công nghệ đồng nai

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 (3.15 MB, 170 trang )

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

CHƯƠNG 3

SẮP XẾP NỘI

1


Nội Dung
1. Đổi chỗ trực tiếp – Interchange Sort

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

2. Chọn trực tiếp – Selection Sort
3. Nổi bọt – Bubble Sort
4. Chèn trực tiếp – Insertion Sort
5. Chèn nhị phân – Binary Insertion Sort
6. Shaker Sort
7. Shell Sort
8. Heap Sort
9. Quick Sort
10. Merge Sort
11. Radix Sort
2


Bài Toán Sắp Xếp

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT


 Cho danh sách có n phần tử a0, a1, a2…, an-1.
 Sắp xếp là quá trình xử lý các phần tử trong danh
sách để đặt chúng theo một thứ tự thỏa mãn một số
tiêu chuẩn nào đó dựa trên thông tin lưu tại mỗi phần
tử, như:
 Sắp xếp danh sách lớp học tăng theo điểm trung
bình.
 Sắp xếp danh sách sinh viên tăng theo tên.
 …
 Để đơn giản trong việc trình bày giải thuật ta dùng
mảng 1 chiều a để lưu danh sách trên trong bộ nhớ
chính.
3


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Bài Toán Sắp Xếp (tt)
 a: là dãy các phần tử dữ liệu
 Để sắp xếp dãy a theo thứ tự (giả sử theo thứ tự
tăng), ta tiến hành triệt tiêu tất cả các nghịch thế trong
a.
 Nghịch thế:
• Cho dãy có n phần tử a0, a1,…,an-1
• Nếu i<j và ai >aj
34

3

4


8

a[0], a[1] là cặp nghịch thế

 Đánh giá độ phức tạp của giải thuật, ta tính
Css: Số lượng phép so sánh cần thực hiện
CHV: Số lượng phép hoán vị cần thực hiện

4


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Các Thuật Toán Sắp Xếp
1. Đổi chỗ trực tiếp – Interchange Sort
2. Chọn trực tiếp – Selection Sort
3. Nổi bọt – Bubble Sort
4. Shaker Sort
5. Chèn trực tiếp – Insertion Sort
6. Chèn nhị phân – Binary Insertion Sort
7. Shell Sort
8. Heap Sort
9. Quick Sort
10. Merge Sort
11. Radix Sort
5


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT


Các Thuật Toán Sắp Xếp
1. Đổi chỗ trực tiếp – Interchange Sort
2. Chọn trực tiếp – Selection Sort
3. Nổi bọt – Bubble Sort
4. Shaker Sort
5. Chèn trực tiếp – Insertion Sort
6. Chèn nhị phân – Binary Insertion Sort
7. Shell Sort
8. Heap Sort
9. Quick Sort
10. Merge Sort
11. Radix Sort
6


Đổi Chỗ Trực Tiếp – Interchange Sort

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

 Ý tưởng: Xuất phát từ đầu dãy, tìm tất các các
nghịch thế chứa phần tử này, triệt tiêu chúng
bằng cách đổi chỗ 2 phần tử trong cặp nghịch
thế. Lặp lại xử lý trên với phần tử kế trong dãy.

7


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT


Các Bước Tiến Hành
 Bước 1: i = 0; // bắt đầu từ đầu dãy
 Bước 2: j = i+1; //tìm các nghịch thế với a[i]
 Bước 3:
Trong khi j < N thực hiện
Nếu a[j]Swap(a[i],a[j]);
j = j+1;
 Bước 4: i = i+1;
Nếu i < N-1: Lặp lại Bước 2.
Ngược lại: Dừng.
8


Đổi Chỗ Trực Tiếp – Interchange Sort

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

 Cho dãy số a:
12
2 8

i=0

i=0

5

1


6

4

15

j=1

j=4

9


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Đổi Chỗ Trực Tiếp – Interchange Sort

i=1

i=1

i=1

j=2

j=3

j=4
10



CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Đổi Chỗ Trực Tiếp – Interchange Sort

i=2

i=2

i=2

j=3

j=4

j=6
11


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Đổi Chỗ Trực Tiếp – Interchange Sort

i=3

i=3

i=3

j=4


j=5

j=6
12


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Đổi Chỗ Trực Tiếp – Interchange Sort

i=4

j=5

j=6

i=4

i=5

j=6
13


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Đổi Chỗ Trực Tiếp – Interchange Sort

i=6


j=7

14


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Cài Đặt Đổi Chỗ Trực Tiếp
void InterchangeSort(int a[], int N )
{
int
i, j;
for (i = 0 ; ifor (j =i+1; j < N ; j++)
if(a[j ]< a[i]) // Thỏa 1 cặp nghịch thế
Swap(a[i], a[j]);
}

15


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Minh Họa Thuật Toán

j
1
12


2

8

5

1

6

4

15

0
i

1

2

3

4

5

6

7


16


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Minh Họa Thuật Toán

j
1

12
2

8

5

2

6

4

15

0
i

1


2

3

4

5

6

7

0

17


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Minh Họa Thuật Toán

j
1

2

4
12


8

5

6

4

15

0

1
i

2

3

4

5

6

7

0

18



CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Minh Họa Thuật Toán

j
1

2

4

5
12

8

6

5

15

0

1

2
i


3

4

5

6

7

0

19


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Minh Họa Thuật Toán

1

2

3

4

5


6

7

8

1

2

4

5

6

8

12

15

20


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Độ Phức Tạp Của Thuật Toán

21



CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Các Thuật Toán Sắp Xếp
1. Đổi chỗ trực tiếp – Interchange Sort
2. Chọn trực tiếp – Selection Sort
3. Nổi bọt – Bubble Sort
4. Shaker Sort
5. Chèn trực tiếp – Insertion Sort
6. Chèn nhị phân – Binary Insertion Sort
7. Shell Sort
8. Heap Sort
9. Quick Sort
10. Merge Sort
11. Radix Sort
22


Chọn Trực Tiếp – Selection Sort

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

 Ý tưởng:

 Chọn phần tử nhỏ nhất trong N phần tử trong
dãy hiện hành ban đầu.
 Đưa phần tử này về vị trí đầu dãy hiện hành
 Xem dãy hiện hành chỉ còn N-1 phần tử của
dãy hiện hành 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ử
23


Các Bước Của Thuật Toán Chọn Trực Tiếp

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

 Bước 1: i = 0;
 Bước 2: Tìm phần tử a[min] nhỏ nhất trong
dãy hiện hành từ a[i] đến a[N]
 Bước 3 : Đổi chỗ a[min] và a[i]
 Bước 4 : Nếu i < N-1 thì
i = i+1; Lặp lại Bước 2;
Ngược lại: Dừng.

24


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Chọn Trực Tiếp – Selection Sort
 Cho dãy số a:
12
2
8

5


1

6

4

15

25


×