1. Trang chủ
  2. » Tất cả

5 sap xep (tt)

16 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sắp xếp (tt)
Trường học Đại học Bách Khoa Hà Nội
Chuyên ngành Cấu trúc dữ liệu và Giải thuật
Thể loại Báo cáo môn học
Năm xuất bản 2018
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 4,07 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Data Structures & Algorithms SẮP XẾP TT Nội dung 1.. Heap Sort 3 Quick Sort... Quick Sort-Ý tưởng Sau khi thực hiện phân hoạch, dãy ban đầu được phân

Trang 1

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

THUẬT

Data Structures & Algorithms

SẮP XẾP (TT)

Nội dung

1 QuickSort

2 Merge Sort

3 Heap Sort

3

Quick Sort

Trang 2

Giải thuật QuickSort sắp xếp dãy a 1 , a 2 ., a N dựa

trên việc phân hoạch dãy ban đầu thành 3 phần :

•Phần 1: Gồm các phần tử có giá trị bé hơn x

•Phần 2: Gồm các phần tử có giá trị bằng x

•Phần 3: Gồm các phần tử có giá trị lớn hơn x

với x là giá trị của một phần tử tùy ý trong dãy

ban đầu

Quick Sort-Ý tưởng

Sau khi thực hiện phân hoạch, dãy ban đầu được phân thành 3 đoạn:

•1 ak ≤ x , với k = 1 j

•2 ak = x , với k = j+1 i-1

•3 ak  x , với k = i N

Quick Sort – Ý tưởng

• Đoạn thứ 2 đã có thứ tự

• Nếu các đoạn 1 và 3 chỉ có 1 phần tử : đã có thứ tự

 khi đó dãy con ban đầu đã được sắp

Quick Sort – Ý tưởng

• Đoạn thứ 2 đã có thứ tự

• Nếu các đoạn 1 và 3 có nhiều hơn 1 phần tử thì dãy ban đầu chỉ có thứ tự khi các đoạn 1, 3 được sắp

• Để sắp xếp các đoạn 1 và 3, ta lần lượt tiến hành việc phân hoạch từng dãy con theo cùng phương pháp phân hoạch dãy ban đầu vừa trình bày …

Quick Sort – Ý tưởng

• Bước 1: Nếu left ≥ right //dãy có ít hơn 2

phần tử

Kết thúc; //dãy đã được sắp xếp

• Bước 2: Phân hoạch dãy aleft … aright thành

các đoạn: aleft aj,aj+1 ai-1,ai aright

Đoạn 1  x

Đoạn 2: aj+1 ai-1 = x

Đoạn 3: ai aright  x

• Bước 3: Sắp xếp đoạn 1: aleft aj

• Bước 4: Sắp xếp đoạn 3: ai aright

Quick Sort – Ý tưởng

• Bước 1 : Chọn tùy ý một phần tử a[k] trong dãy là giá trị mốc ( l ≤ k ≤ r):

• Bước 2 : Phát hiện và hiệu chỉnh cặp phần tử a[i], a[j] nằm sai chỗ :

• Bước 2a : Trong khi (a[i]<x) i++;

• Bước 2b : Trong khi (a[j]>x) j ;

• Bước 2c : Nếu i< j Swap(a[i],a[j]);

• Bước 3 : Nếu i < j: Lặp lại Bước 2

Ngược lại: Dừng

Quick Sort – Ý tưởng

Trang 3

Quick Sort – Ý tưởng

• Cho dãy số a:

Phân hoạch đoạn l =0, r = 7: x = a[3] = 5

Quick Sort – Ví dụ

j = 6

i = 0

i = 1

j = 5

i = 2

j = 4

j = 3

Quick Sort – Ví dụ

i = 0 j = 2

Quick Sort – Ví Dụ

• Phân hoạch đoạn l = 0, r = 2:

Quick Sort – Ví dụ

• Phân hoạch đoạn l =4, r = 7:

r =7

l = 4

15

i = 4

i = 4 j = 6 j = 6 j = 7

Quick Sort – Ví dụ

Quick Sort – Ví Dụ

• Phân hoạch đoạn l =6, r = 7:

Quick Sort – Ví dụ

Trang 4

Quick Sort – Giải thuật Partition – Phân hoạch

Quick Sort – Ví dụ

12

0

5

X

5

4

0

5

X

Quick Sort – Ví dụ

Trang 5

25

Quick Sort – Ví dụ

4

0

i

j

26

Quick Sort – Ví dụ

4

0

left right

X

2

27

Quick Sort – Ví dụ

1

0

left right

X

6

28

Quick Sort – Ví dụ

1

0

left right

i

j

Quick Sort – Ví dụ

1

0

left right

12

Quick Sort – Ví dụ

1

0

Trang 6

31

Quick Sort – Đánh giá

32

Quick Sort – Độ phức tạp

33

Quick Sort – Nhận xét

34

Quick Sort – Bài Tập

Cho biết kết quả từng bước khi sắp xếp dãy sau tăng dần bằng thuật toán quick Sort

M={3,5,33,1,8,12,4,23,8}

Quick Sort – Bài Tập

M={3,5,33,1,8,12,4,23,8}

Quick Sort – Cách khác

Trang 7

37

Quick Sort – Cách khác

38

Quick Sort – Cách khác

39

Merge Sort – Trộn

40

Merge Sort – Trộn

Tư tưởng trộn:

• Có 2 mảng đã được sắp xếp chiều dài a,b

• Tạo ra 1 mảng chung được sắp xếp

3

a

b

Merge Sort – Trộn Ý Tưởng

Bước 1: chọn min của 2 phần tử đầu dãy chép qua

mảng kết quả

Bước 2: hủy phần tử min

Bước 3: nếu chưa đến cuối mảng trở về bước 1

Nếu đến cuối mảng: chép phần còn lại của mảng

kia vào mảng kết quả

Merge Sort – Trộn

i=0

j=0

Trang 8

43

Merge Sort – Trộn

3 i=0

1

j=1

2

1

44

Merge Sort – Trộn

3 i=1

1

j=1

1

2

45

Merge Sort – Trộn

i=1

1

j=2

1

2

3

46

Merge Sort – Trộn

i=1

1

j=3

1

2

3 4

Thực hiện lần lượt

Merge Sort – Trộn

14

20 J=5

1

j=7 i=8

5 7 8 9 10 13

4 6 11

1

2

3

Merge Sort – Trộn

20 J=5

1

i=8

20 j=6

Chép phần còn lại của mảng 2

Trang 9

49

Merge Sort – Trộn

Ví dụ khác ta có a=(1,3,7,9), b=(2,6),

quá trình hòa nhập diễn ra như sau:

Danh sách a Danh sách b So sánh Danh sách c

1,3,7,9 2,6 1<2 1

3,7,9 2,6 2<3 1,2

3,7,9 6 3<6 1,2,3

7,9 6 6<7 1,2,3,6

50

Merge Sort – Trộn

51

Merge Sort – Viết hàm

52

Merge Sort – Trộn

Trang 10

55

Merge Sort – Trộn

56

Merge Sort – Trộn

57

Merge Sort – Trộn

58

Merge Sort – Trộn

Merge Sort – Trộn

Trang 11

61

Merge Sort – Ý tưởng

62

Merge Sort – Ý tưởng

63

Merge Sort – Trộn

void MergeSort(int []M,int left,int right)

{

if (left >= right) return;

int mid = (left + right) / 2;

MergeSort(M, left, mid);

MergeSort(M, mid + 1, right);

Merge(M, left, mid, right);

}

64

Merge Sort – Trộn

void Merge(int []M,int left,int mid,int right) {

int[] Temp = new int[right - left + 1];

int pos = 0;

int i = left;

int j = mid + 1;

while(!(i>mid && j>right)) {

if((i<=mid && j <=right && M[i]<M[j]) || j>right) Temp[pos++] = M[i++];

else Temp[pos++] = M[j++];

} for(i=0;i<Temp.Length;i++) M[left + i] = Temp[i];

}

Trang 12

67

Heap Sort

68

Định nghĩa Heap

69

Heap Sort

70

Heap Sort

Trang 13

73

Heap Sort – Ý tưởng

74

Heap Sort – Ý tưởng

75

Thêm một nút vào Heap

76

Thêm một nút vào Heap

Trang 14

79

Xóa nút gốc từ Heap

80

Xóa nút gốc từ Heap

81

Xóa nút gốc từ Heap

82

Heap Sort

Trang 15

85

Heap Sort -Ví dụ minh họa – Tạo Heap

86

Heap Sort -Ví dụ minh họa – Sắp xếp từ Heap

87

Heap Sort -Ví dụ minh họa – Sắp xếp từ Heap

88

Heap Sort -Ví dụ minh họa – Sắp xếp từ Heap

Trang 16

91

Heap Sort – Cài đặt

92

Heap Sort – Nhận xét

93

• Slide được tham khảo từ:

• Slide CTDL GT, Khoa Khoa Học Máy Tính, ĐHCNTT

• Slide CTDL GT, Thầy Nguyễn Tấn Trần Minh Khang, ĐH CNTT

• Slid CTDL GT, Cô Trần Thị Thương, ĐH CNTT

• Congdongcviet.com

• Cplusplus.com

Slide được tham khảo từ

94

Ngày đăng: 25/02/2023, 15:25

w