1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng cấu trúc dữ liệu và giải thuật – bài 5 phương pháp sắp xếp đơn giản

31 5 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 31
Dung lượng 595,55 KB

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

Nội dung

Vai trò c ủa sắp xếp 1/2 Nếu các đối tượng trong một mảng nào đó đã được sắp theo trật tự nào đó, có thể truy xuất thông tin nhanh chóng và chính xác... Các v ấn đề của sắp xếp Với cùn

Trang 1

Lecturer: PhD Ngo Huu Phuc

Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com

Bài 5 Phương pháp sắp xếp đơn giản

Trang 2

Bài 5: Các phương pháp sắp xếp đơn giản

1 Lecture 16 Introduction to Sorting.htm

2 Data Structures and Algorithms Sorting.htm

3 Tham kh ảo bài giảng của TS Nguyễn Nam Hồng

Trang 3

5.1 Khái ni ệm và vai trò của sắp xếp

Trang 4

5.1.1 Các thu ật toán sắp xếp (1/2)

Th ế nào là sắp xếp?

 Đưa một dãy các đối tượng về dạng thứ bậc nào đó.

Gi ải thuật sắp xếp dựa trên sự so sánh nào đó.

 Việc sắp xếp chỉ dựa trên phép toán so sánh

Các phép toán cơ bản của sắp xếp.

 So sánh

 Tráo đổi giữa các phần tử

Trang 5

ố phần tử cần sắp xếp.

Trang 6

5.1.2 Vai trò c ủa sắp xếp (1/2)

 Nếu các đối tượng trong một mảng nào đó đã được sắp theo trật tự nào đó, có thể truy xuất thông tin nhanh chóng

và chính xác

 Việc xây dựng giải thuật cho phép sắp xếp từng phần tử

của mảng sẽ mất nhiều thời gian, độ phức tạp của giải

 ≈ 250,000,000 bước cho việc sắp một mảng có 10,000,000 phần tử

⇒ 2.5 giây, với máy tính có thể thực hiện 100 triệu phép tính

Trang 7

5.1.2 Vai trò c ủa sắp xếp (2/2)

 Như vậy, sắp xếp là giải thuật cơ bản.

 Thông thường, 25% khả năng của CPU dành

cho vi ệc sắp xếp.

 S ắp xếp là bước cơ bản cho một số giải thuật

khác, ví d ụ: tìm kiếm nhị phân.

 Có nhi ều cách tiếp cận đến giải thuật sắp xếp,

t ừ đó, có nhiều giải thuật săp xếp khác nhau.

Trang 8

5.1.3 Các v ấn đề của sắp xếp

 Với cùng một giải thuật sắp xếp, có thể dùng cho cả sắp theo trật tăng hay giảm, bằng việc thay đổi phép so sánh:

<= và >=

 Có thể dùng nhiều khóa cho cùng một giải thuật sắp xếp

Cần lưu ý đến ý tưởng của bài toán

Với chuỗi, sử dụng phép so sánh chuỗi, từ điển, hay quy

tắc nào đó

Ví dụ: Sắp chuỗi Brown-Williams, Brown America, Brown,

John?

Trang 10

5.1.4 M ột số ứng dụng của sắp xếp (2/2)

 Các t ừ trong từ điển đã được sắp xếp.

 Thông thường, các Files trong thư mục được sắp theo m ột trật tự nào đó.

 Trong thư viện, các quyển sách được sắp theo

Trang 11

Tráo đổi - Exchange: với mỗi cặp các phần tử, tráo đổi

chúng về đúng thứ tự, thực hiện cho đến khi không còn cặp nào chưa đưa về đúng thứ tự

Ch ọn - Selection: chọn phần tử lớn nhất (nhỏ nhất) trong danh sách, đưa về đúng vị trí

Phân lo ại - Distribution: chia nhỏ thành nhiều mảnh dựa trên tiêu chí nào đó, sau đó sắp từng mảnh

H ợp - Merging: có thể nối 2 dãy đã sắp xếp thành 1 dãy được sắp xếp

Trang 12

 Th ực hiện cho đến khi các phần tử đều được xét.

 V ới mỗi phần tử, chèn chúng vào mảng con đã sắp đúng trật

t ự.

 Th ực hiện tương tự cho các phần tử còn lại.

 Tìm 2 ph ần tử trong dãy không đúng trật tự, tráo đổi vị trí của chúng.

 Gi ữ lại danh sách đã hiệu chỉnh.

Trang 13

5.1.6 Phân tích hi ệu quả của giải thuật

 Có thể truy xuất ngẫu nhiên được không?

 Có cần thêm thao tác nào không ngoài “so sánh” và

“tráo đổi”?

Trang 14

5.1.6 Phân tích hi ệu quả của giải thuật

Tính ổn định:

 Thu ật toán có tính ổn định không?

S ự hiệu quả, nếu dãy đã gần sắp:

 Thu ật toán có hiệu quả hơn nếu như dãy đã cho

g ần được sắp? (nhiều phần tử đã đúng thứ tự,

ch ỉ có một số chưa đúng thứ tự)

Trang 15

5.2 S ắp xếp chèn (1/6)

Ví d ụ minh họa:

 Xem xét người chơi bài (sắp theo chiều giảm dần)

 Quân bài th ứ nhất được sắp.

 V ới các quân bài còn lại:

 Tìm t ừ cuối dãy cho đến khi tìm thấy quân bài lớn hơn quân bài

m ới,

 Di chuy ển các quân bài nhỏ về sau một bậc

 Chèn quân bài m ới vào vị trí đó.

Trang 16

 Vùng đã sắp bắt đầu từ phần tử đầu tiên của dãy.

 L ấy phần tử đầu tiên của vùng chưa sắp và chèn vào vùng đã sắp.

 Như vậy, vùng đã sắp sẽ có thêm một phần tử.

 Th ực hiện tương tư cho đến khi vùng chưa sắp không còn phần tử nào.

Trang 17

5.2 S ắp xếp chèn (3/6)

được chèn

Giá tr ị 5 nhỏ hơn 8, 5 sẽ thay thế cho 8, dãy đã sắp sẽ có kích thước

tăng lên 1 (có 2 phần tử đã được sắp.

Gi ả sử: Sắp xếp dãy các số nguyên theo phương pháp chèn

Ho ạt động của

Trang 18

5.2 S ắp xếp chèn (4/6)

#include <stdio.h>

#include <conio.h>

#define MAX 100

void inputdata( int * list, int n);

void printlist( int * list, int n);

void insertionsort( int * list, int n);

printf("\n");

}

Trang 19

} list[pos+1]=x;

}

Trang 20

5.2 S ắp xếp chèn (6/6)

Phân tích s ắp xếp chèn:

 Trường hợp tồi nhất:

 V ới dữ liệu dạng nào cho kết quả tồi nhất?

 D ữ liệu được sắp theo chiều ngược lại.

 Độ phức tạp trong trường hợp này?

O (N2) – phép so sánh: N2, phép tráo đổi: N2

 Trường hợp tốt nhất:

 V ới dữ liệu dạng nào cho kết quả tốt nhất?

 D ữ liệu đã được sắp.

 Độ phức tạp trong trường hợp này?

O (N) – phép so sánh: N, phép tráo đổi: none

 Trường hợp trung bình:

 V ới dữ liệu dạng nào cho kết quả trung bình?

 D ữ liệu dạng ngẫu nhiên.

 Độ phức tạp trung bình?

O (N2) – phép so sánh: N2, phép tráo đổi: N2

Trang 21

5.3 S ắp xếp chọn (1/5)

 Đây cũng là phương pháp sắp xếp đơn giản

 Tại mỗi bước, chọn phần tử lớn nhất (nhỏ nhất) trong số

phần tử chưa sắp và đưa về đúng vị trí

Ý t ưởng : (v ới sắp xếp tăng dần)

 Bước 1: Tìm phần tử nhỏ nhất trong dãy và đưa nó về vị trí đầu tiên của dãy

 Bước 2: Tìm phần tử nhỏ thứ hai và đưa nó về vị trí thứ 2 trong dãy

 Bước tiếp: Lặp lại quá trình trên cho đến khi tất các phần

tử đã sắp đúng thứ tự

Trang 22

Tráo đổi nó với phần tử đầu tiên

c ủa dãy, phần tử có giá trị 6.

Tìm ph ần tử nhỏ nhất trong số

có giá tr ị 3 và trao đổi nó với

ph ần tử đứng thứ 2 trong dãy, có giá tr ị 4.

Gi ả sử, cho 5 phần tử như sau, chưa sắp Sắp lại dãy số trên theo

phương pháp sắp xếp chọn.

Ho ạt động của Selection Sort

Trang 23

5.2 S ắp xếp chọn (3/5)

#include "stdio.h"

#include "conio.h"

#define MAX 100

void swap( int *x, int *y);

void selectionsort( int list[], int n);

void inputdata( int list[], int n);

void printlist( int list[], int n);

printf("Mang da sap xep:\n");

void inputdata( int list[], int n) {

int i;

printf("Nhap cac phan tu cua mang\n");

for (i=0;i<n;i++) scanf("%d",&list[i]);

Trang 26

5.4 S ắp xếp nổi bọt - Bubble Sort (1/5)

S ắp xếp nổi bọt là k ỹ thuật sắp xếp đơn giản, trong kỹ thu ật này tổ chức các phần tử của mảng thành các

c ặp liền kề.

 V ới các cặp liền kề, thứ i và thứ i+1, đổi chỗ các phần

t ử này nếu chúng không đúng trật tự sắp xếp Sau mỗi

l ần thực hiện việc đổi chỗ, ta thu được 1 phần tử đã ở đúng vị trí.

 Th ực hiện lặp lại quá trình trên cho n-1 phần tử còn lại.

 Thu ật toán dừng khi không còn cặp nào sai vị trí.

Trang 27

5.4 S ắp xếp nổi bọt (2/5)

3 2 2 2

2 3 3 3

4 4 4 1

1 1 1 4

5 5 5 5

2 2 2

3 3 1

1 1 3

4 4 4

5 5 5 2 1

1 2

3 3

4 4

1 2

3 4

Trang 28

5.2 S ắp xếp nổi bọt (3/5)

#include <stdio.h>

#include <conio.h>

#define MAX 100

void inputdata( int list[], int n);

void printlist( int list[], int n);

void swap( int *x, int *y);

void bubblesort( int list[], int n);

printf("\n");

}

Trang 30

5.4 S ắp xếp nổi bọt (5/5)

Phân tích hi ệu quả của thuật toán sắp xếp nổi bọt:

 Độ phức tạp:

 Trong trường hợp tồi nhất: O(n 2 )

 Trong trường hợp trung bình: O(n 2 )

 Đối với dữ liệu:

 D ữ liệu cho phép truy cập ngẫu nhiên.

 C ần có phép toán so sánh và tráo đổi.

 Đối với dữ liệu đã gần được sắp:

 S ố phép tráo đổi có thể ít, nhưng số phép so sánh nhiều Tổng quát, không t ốt hơn so với dữ liệu random.

Trang 31

 Các giải thuật này được thực hiện với dữ liệu cho phép truy

cập ngẫu nhiên (sắp xếp trong)

 Độ phức tạp trong trường hợp trung bình là O(n2)

 Trong bài 6, giới thiệu một số giải thuật sắp xếp cho hiệu

Ngày đăng: 26/12/2021, 17:19

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