1. Trang chủ
  2. » Thể loại khác

CÁC THUẬT GIẢI SẮP XẾP VÀ TÌM KIẾM

29 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 29
Dung lượng 1,87 MB

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

Nội dung

CHƯƠNG 2: CÁC THUẬT GIẢI SẮP XẾP VÀ TÌM KIẾM... 2.1 Một số phương pháp sắp xếp đơn giản... Tổng quan Để có thể sử dụng thuật toán tìm nhị phân  Để thực hiện thao tác nào đó được nhanh

Trang 1

CHƯƠNG 2: CÁC THUẬT GIẢI SẮP XẾP

VÀ TÌM KIẾM

Trang 2

2.1 Một số phương pháp sắp xếp đơn giản

Trang 3

Nội dung

3

Trang 4

Tổng quan

 Để có thể sử dụng thuật toán tìm nhị phân

 Để thực hiện thao tác nào đó được nhanh hơn

 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 chuẩn nào đó dựa trên

nội dung thông tin lưu giữ tại mỗi phần tử

Chương 2: Sắp xếp

4

Trang 5

Các phương pháp sắp xếp thông dụng

5

Trang 6

2.1.1 Đổi chổ trực tiếp (Interchange Sort)

 Xét một mảng các số a[0], a[1], … a[n-1]

 Nếu có i<j và a[i] > a[j], thì ta gọi đó là một nghịch thế

Trang 7

Interchange Sort – Ý tưởng

 Để sắp xếp một dãy số, ta có thể xét các nghịch thế có trong dãy

và làm triệt tiêu dần chúng đi

 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

7

Trang 8

Interchange Sort – Ví dụ

5

1 2

Trang 9

1 2

5 1

Trang 12

Interchange Sort – Ví dụ

2

1 5 1

Trang 13

Interchange Sort – Thuật toán

// input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp

 Bước 1: i = 0; // bắt đầu từ đầu dãy

 Bước 2: j = i+1;

 Bước 3: Trong khi j < n thực hiện:

 Nếu a[i]>a[j] thì đổi chỗ a[i], a[j]

Trang 14

Interchange Sort - Cài đặt

void InterchangeSort ( int a[], int n)

{

for ( int i=0 ; i<n-1 ; i++)

for ( int j=i+1; j<n ; j++)

if(a[i]>a[j]) //nếu có nghịch thế thì đổi chỗ

Swap (a[i], a[j]);

Trang 15

Các phương pháp sắp xếp thông dụng

15

Trang 16

2.1.2 Nổi bọt (Bubble Sort) – Ý tưởng

phần tử nhỏ hơn trong cặp phần tử đó về vị trí đầu dãy hiện hành, sau đó sẽ không xét đến nó ở bước tiếp theo

Trang 17

Bubble Sort – Ví dụ

5

1 2

Trang 18

Bubble Sort – Ví dụ

1 2

5 1

Trang 23

Bubble Sort – Ví dụ

2

1 5 1

1 2

23

Trang 24

Bubble Sort – Thuật toán

// input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp

 Bước 1: i = 0;

 Bước 2: j = n-1; //Duyệt từ cuối dãy ngược về vị trí i

 Trong khi (j > i) thực hiện:

 Nếu a[j]<a[j-1] thì đổi chỗ a[j], a[j-1]

Trang 25

Bubble Sort - Cài đặt

void BubbleSort ( int a[], int n) {

for ( int i=0; i<n-1; i++)

for ( int j=n-1; j>i; j )

if (a[j] < a[j-1])

Swap (a[j], a[j-1]); }

25

Trang 26

Bubble Sort - Đánh giá giải thuật

trạng của dãy số ban đầu

sánh

26

Chương 2: Sắp xếp

Trang 27

Bubble Sort - Đánh giá giải thuật

Trang 28

Interchange Sort - Đánh giá giải thuật

trạng của dãy số ban đầu

sánh

Chương 2: Sắp xếp

28

Trang 29

Sinh viên mở file bài tập để rèn luyện phần đã học.

Ngày đăng: 19/04/2022, 10:35

TỪ KHÓA LIÊN QUAN

w