Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 4: Giải thuật sắp xếp và tìm kiếm đơn giản - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

7 13 1
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 4: Giải thuật sắp xếp và tìm kiếm đơn giản - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

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

Thông tin tài liệu

[r]

(1)

Chương 4: Giải thuật sắp xếp tìm kiếm đơn giản

1 Sắp xếp chọn (Selection Sort)

2 Sắp xếp chèn (Insert Sort)

3 Sắp xếp nổi bọt (Bubble Sort)

4 Tìm kiếm tuần tự (Sequence Search)

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.1

1 Sắp xếp chọn (Selection Sort)

1.1 Phương pháp

• Giả sử cần sắp xếp tăng dần một dãy khoá a1, a2, , an.

• Ý tưởng của thuật tốn như sau:

– Chọn phần tử có khố nhỏ nhất – Đổi chỗ với phần tử a1

(2)

1.1 Phương pháp (tiếp)

• Ví dụ:

Cho dãy khố ban đầu là: 6, 10, 1, 8, 9

với n=5.

i=1 1, 10, 6, 8, 9 i=2 1, 6, 10, 8, 9 i=3 1, 6, 8, 10, 9 i=4 1, 6, 8, 9, 10

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.3

1.1 Phương pháp (tiếp)

Procedure selectionSort(a,n); For i:= to n-1 Do

Begin

{Tìm phần tử nhỏ vị trí k } k:=i;

For j:=i+1 To n Do

If a[j] < a[k] then k:=j

{Đổi chỗ phần tử nhỏ k cho phần tử i} If k ≠ i then a[k]↔a[i];

(3)

2.2 Đánh giá giải thuật

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04

• Với giải thuật trình bày ở phép tốn tích cực

là phép so sánh (a[j]<a[k]).

• Gọi C số lượng phép so sánh, C được tính như sau:

Ở lượt thứ i (i=1, 2,… , n-1), để tìm khố nhỏ nhất cần n-i phép so sánh Số lượng phép so sánh không phụ thuộc vào tình trạng ban đầu của dãy khố Do đó ta có:

• Vậy, độ phức tạp tính toán O(n2)

6.5

2 Sắp xếp chèn (Insert Sort)

2.1 Phương pháp

• Phương pháp được những người chơi hay

dùng.

• Giả sử cần sắp xếp tăng dần dãy khoá a1, a2, , an Ý

tưởng thuật toán như sau:

– Các phần tử chia thành dãy đích: a1, , ai-1 (kết quả)

và dãy nguồn ai, , an

– Bắt đầu với i=2, bước phần tử thứ i dãy nguồn

(4)

2.1 Phương pháp

• Ví dụ: Cho dãy khố 6, 10, 1, 7, với n=5 (dãy

số có phần tử).

Dãy đích Dãy nguồn

6 10, 1, 7, 4

i=2 6, 10 1, 7, 4

i=3 1, 6, 10 7, 4

i=4 1, 6, 7, 10 4

i=5 1, 4, 6, 7, 10

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.7

Thủ tục chèn

Procedure insertSort(a,n) 1) a[0]:=-∞

2) For i:=2 to n Do Begin

tg:=a[i]; j:=i-1; While tg<a[j] Do

Begin

a[j+1]:=a[j]; j:=j-1; End;

a[j+1]:=tg; {chèn tg vào sau a[j]} End;

(5)

2.2 Đánh giá thuật tốn

• Phép tốn tích cực thuật tốn

phép so sánh (tg<a[j]) Số phép toán so sánh C

được tính như sau:

– Trường hợp thuận lợi nhất dãy khoá a1, a2, , an

đã được sắp, như vậy mỗi lần chỉ cần phép so sánh Do vậy

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.9

2.2 Đánh giá thuật tốn

• Trường hợp xấu dãy khoá theo thứ tự ngược với

thứ tự xếp lượt i cần có: C= (i-1) phép so sánh Do

• Trường hợp trung bình: Giả sử giá trị khố xuất

đồng khả trung bình phép so sánh lượt thứ i Ci= i/2, số phép so sánh trung bình giải thuật là:

(6)

3 Sắp xếp nổi bọt (Bubble Sort)

3.1 Phương pháp

• Giả sử cần sắp xếp tăng dần dãy khoá a1, a2, , an Ý

tưởng thuật toán như sau:

– So sánh cặp khóa liền kề, gối từ phải qua trái, khóa đứng sau nhỏ khóa đứng trước đổi chỗ Loạt so sánh thứ khóa nhỏ dãy đẩy lên vị trí (gọi phần tử sắp)

– Tiếp tục so sánh đổi chỗ phần tử liền kề gối dãy chưa sắp, lần thứ ta số nhỏ dãy chưa đưa lên đầu dãy chưa sắp(ví trí 2)

– Cứ tiếp tục làm tương tự dãy phần tử

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.11

3.1 Phương pháp (tiếp)

• Ví dụ: Cho dãy khoá ban đầu là: 6, 3, 7, 10, 1, với n=6.

6, 3, 7, 10, 1, 8

(7)

Thủ tục sắp xếp nổi bọt

Procedure bubbleSort(a,n) For i:= to n-1 Do

For j:= n downto i+1 Do If a[j]<a[j-1] then

a[j] <-> a[j-1]; Return

Ngô Công Thắng Bài giảng CTDL&GT - Chương 04 6.13

3.2 Đánh giá thuật tốn

• Giải thuật tương tự như giải thuật sắp xếp bằng

cách chọn trực tiếp (mục 1), đó có:

• Nhận xét: Với phương pháp sắp xếp trên, nếu n

vừa nhỏ phương pháp chèn trực tiếp (insert sort) tỏ tốt hơn, nếu với n lớn cả phương pháp đều có cấp O(n2), đây một chi phí thời gian

Ngày đăng: 01/04/2021, 13:38

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan