1. Trang chủ
  2. » Trung học cơ sở - phổ thông

hoa cuong có thì sử dụng – thích thì lao vào

37 9 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

Định dạng
Số trang 37
Dung lượng 580 KB

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

Nội dung

Duyệt qua dãy, nếu 2 phần tử kề nhau không thứ tự thì hoán đổi. Thực hiện cho đến khi dãy có thứ tự Thuật giải nổi bọt (Bubble sort)[r]

Trang 1

Sắp thứ tự

Trang 2

1 Phương pháp chèn (Insertion sort)

Nội dung phương pháp:

• Xét dãy a1, …., ai-1 có thứ tự, tìm vị trí thích hợp của ai trong dãy trên để chèn vào sao cho ta

được dãy a1, …., ai có thứ tự

• Thực hiện với i = 2, … , n ta được dãy a1, ….,

an có thứ tự

Trang 5

1 (

) 1 ( )

1 (

2

) 1 (

2

2 max

i n

M

n M

n i

2

) 1

n C

Trang 7

2 Phương pháp chọn (Selection sort)

Nội dung phương pháp:

• Chọn phần tử nhỏ nhất trong dãy ai, …., an là ak

• Hoán đổi phần tử ai với ak

Thực hiện với i = 1, … , n-1 ta được dãy a1, ….,

an có thứ tự

Trang 10

( )

1 (

) 1 (

3

) 1 (

3

2 max

n M

n

M

n i

2

) 1

n C

Trang 13

3 Phương pháp đổi chổ

Nội dung phương pháp:

Duyệt qua dãy, nếu 2 phần tử kề nhau không thứ tự thì hoán đổi

Thực hiện cho đến khi dãy có thứ tự

Thuật giải nổi bọt (Bubble sort)

Phép duyệt: duyệt từ cuối về đầu dãy -> phần

tử nhỏ nhất về đầu dãy: nổi bọt

Trang 15

Sap thu tu - phuong phap noi bot

void bubblesort(elem a[], int n, int (*comp)(elem, elem)) {

Trang 16

swap(a[j], a[j-1]);

OK = 0;

} i++;

Trang 17

Thuật giải Sàng (Shaker sort)

Nội dung phương pháp:

Thực hiện lặp 2 quá trình liên tiếp:

Duyệt từ phải qua trái: Nổi bọtDuyệt từ trái qua phải: Lắng đọngMỗi quá trình ghi nhận vị trí hóa đổi sau cùng làm điểm xuất phát cho quá trình tiếp theo

Thực hiện cho đến khi phải vượt trái

Trang 18

Thuật giải Shaker sort(C)

Trang 19

II Các thuật giải kải tiến

Trang 20

1 Giải thuật “vun đống” (Heap sort)

Cải tiến từ phương pháp chọn

Định nghĩa:

• Heap: Là cấu trúc cây nhị phân đầy đủ theo nghĩa: các nút được bố trí tuần tự từ mức thấp đến mức cao, từ trái qua phải

Ví dụ:

Trang 21

Giải thuật “vun đống” (Heap sort)

• Heap max (min): Là cấu trúc heap thỏa điều kiện : mọi nút đều có khóa lớn (nhỏ) hơn 2 con

Ví dụ:

9

6 8

5

2 1

4

Trang 23

Khởi tạo heap max ban đầu

• Ta có ai với i=n/2+1, … n là các nút lá trên cây nên hiển nhiên thỏa mãn tính chất heap max

• Để khởi tạo heap max ban đầu ta tìm cách biến đổi a i (với i=n/2, …, 1) thành heap max khi ai+1,

…, a n thỏa heap max

Trang 24

Sắp thứ tự

• Khi i=1 ta có dãy thỏa mãn tính chất heap max, nghĩa là a1 là phần tử lớn nhất

• Để sắp thứ tự, phần tử lớn nhất phải nằm cuối nên ta hoán đổi phần tử a1 với an

• Biến đổi a1 thành heap max khi a2, …, a n-1 thỏa heap max

• Tiếp tục hoán đổi và biến đổi cho đến khi dãy

có thứ tự

Trang 25

3 2

5

9

1 4

3 2

5

4

Trang 26

1 4

3 2

5

3

1 4

9 2

5

3

Trang 27

8

1 4

9 2

3

2

1 4

9 8

3

Trang 28

1 4

9 8

9 8

3

Trang 29

9 8

7

Trang 30

Giải thuật biến đổi heap max (q, r)

– j=2i 2.3 Ngược lại

Trang 31

Sắp thứ tự

1 Khởi tạo heap max ban đầu

Với i=n/2, …, 1 Thực hiện:

Biến đổi heap max(i, n)

Trang 32

void sift(elem a[ ], int q, int r, int (*comp)(elem, elem))

memcpy(&a[i], &a[j], sz);

i = j;

j = 2*i+1; //lưu ý }

else

cont = 0;

}

Trang 34

2 Giải thuật Quick sort

• Cải tiến từ phương pháp đổi chổ

• Dựa trên phép phân hoạch:

• Chọn giá trị phân hoạch x thỏa:

• Tiếp tục thực hiện cho đến khi i>j

Kết quả dãy sẽ bị phân hoạch thành 2 dãy:

Dãy từ l đến j mang giá trị ≤ x

Dãy từ i đến r mang giá trị ≥ x

Trang 35

if (l<j) sort(a, l, j, comp);

if (i<r) sort(a, i, r, comp);

}

Trang 36

void qsort(elem a[ ], int n, int (*comp)(elem, elem)) {

sort(a, 0, n-1, comp);

}

Trang 37

Bài tập

• Viết

– Quick sort 1 lời gọi đệ quy

– Quick sort không đệ quy

– Chương trình nhập 1 dãy số nguyên, đưa:

• Lẻ về đầu dãy và sắp thứ tự tăng

• Chẵn về cuối dãy và sắp thứ tự giảm

Ngày đăng: 20/04/2021, 01:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w