1. Trang chủ
  2. » Mẫu Slide

Bài giảng Cấu trúc dữ liệu và giải thuật: Sắp xếp - Phan Mạnh Hiển (2020)

10 16 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 636,58 KB

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

Nội dung

Sắp xếp nổi bọt (bubble sort).[r]

Trang 1

Sắp xếp

(Sorting)

Nguyễn Mạnh Hiển

hiennm@tlu.edu.vn

Trang 2

Nội dung

1 Sắp xếp chọn

2 Sắp xếp nổi bọt

3 Sắp xếp chèn

4 Sắp xếp vun đống

5 Sắp xếp trộn

6 Sắp xếp nhanh

Trang 3

1 Sắp xếp chọn (selection sort)

Trang 4

Sắp xếp chọn

• Dãy A gồm n phần tử a0, a1, …, an-1

• Mỗi bước xét một danh sách con chưa sắp xếp (unsorted sublist - USL)

• Có n-1 bước:

− Bước 0: USL0 = {a0, a1, …, an-1}

− Bước 1: USL1 = {a1, …, an-1}

− Bước n-2: USLn-1 = {an-2, an-1}

Trang 5

Sắp xếp chọn (tiếp)

• Mỗi bước:

− Tìm phần tử nhỏ nhất amin trong USL

− Đổi chỗ amin và phần tử đầu tiên của USL

− Dịch chuyển biên trái của USL sang phải một

vị trí

Trang 6

Ví dụ sắp xếp chọn

• Ban đầu: 64, 25, 12, 22, 11 (11  64)

• Sau bước 0: 11, 25, 12, 22, 64 (12  25)

• Sau bước 1: 11, 12, 25, 22, 64 (22  25)

• Sau bước 2: 11, 12, 22, 25, 64 (25  25)

• Sau bước 3: 11, 12, 22, 25, 64

(danh sách con chưa sắp xếp được gạch chân)

Trang 7

Cài đặt sắp xếp chọn

template <typename T>

void selectionSort(vector<T> & a) {

for (int i = 0; i < a.size() - 1; i++) {

int vt = i; // vị trí của min

for (int j = i + 1; j < a.size(); j++)

if (a[vt] > a[j])

vt = j; // cập nhật vị trí của min

if (vt != i) { // đổi chỗ min và phần tử đầu USL

T tg = a[vt];

a[vt] = a[i];

a[i] = tg;

}

}

}

Trang 8

Phân tích sắp xếp chọn

• Đếm số phép so sánh a[vt] > a[j]

• Vòng for bên trong lặp với j từ i+1 đến n-1, tức là có n-1-i phép so sánh

• Vòng for bên ngoài lặp với i từ 0 đến n-2

𝑡 𝑛 = 𝑛 − 1 − 𝑖

𝑛−2

𝑖=0

= 𝑛 − 1 + 𝑛 − 2 + ⋯ + 1

= 𝑛 𝑛 − 1

2 = 𝑂(𝑛

2 )

Trang 9

2 Sắp xếp nổi bọt (bubble sort)

Trang 10

Sắp xếp nổi bọt

• Mỗi bước duyệt qua các phần tử a0, a1, …, ak

• Tại mỗi phần tử ai (i < k):

− So sánh ai với ai+1

− Đổi chỗ nếu chúng chưa đúng thứ tự

• Sau mỗi bước, phần tử lớn nhất sẽ được đặt (“nổi bọt”) xuống cuối dãy (ak là max)

Ngày đăng: 11/03/2021, 07:26

TỪ KHÓA LIÊN QUAN

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

w