SlideShare a Scribd company logo
1 of 41
CÁC GIẢI THUẬTCÁC GIẢI THUẬT
SẮP XẾPSẮP XẾP
SẮP XẾPSẮP XẾP
I. Bài toán sắp xếp
II. Một số thuật toán sắp xếp
1. Sắp xếp kiểu chọn (Selection Sort)
2. Sắp xếp kiểu chèn (Insertion Sort)
3. Sắp xếp kiểu nổi bọt (Buble Sort)
I. Bài toán sắp xếpI. Bài toán sắp xếp
• Cho dãy K = (k1, k2, …, kn) gồm n
phần tử gọi là khóa. Giữa hai khóa
bất kì có quan hệ “≤”. Bài toán yêu
cầu hoán vị các phần tử của K để:
k1 ≤ k2 ≤ k3 ≤… ≤ kn
II. Một số thuật toán sắp xếpII. Một số thuật toán sắp xếp
1.Sắp xếp kiểu chọn
(Selection Sort)
2.Sắp xếp kiểu chèn
(Insertion Sort)
3.Sắp xếp kiểu nổi bọt
(Buble Sort)
1. Sắp xếp kiểu chọn1. Sắp xếp kiểu chọn
(Selection Sort)(Selection Sort)
a. Ý tưởng thuật toán
b. Mô phỏng
c. Cài đặt
d. Đánh giá thời gian thực hiện
giải thuật
a. Ý tưởng thuật toán kiểu chọna. Ý tưởng thuật toán kiểu chọn
• Thực hiện n – 1 lượt việc đưa phần tử min
trong dãy hiện hành về vị trí đúng ở đầu dãy:
– Lượt 1: Chọn dãy khóa K[1..n] ra khóa min và đảo
vị trí với k1
– Lượt 2: Chọn dãy khóa K[2..n] ra khóa min và đảo
vị trí với k2
– …
– Lượt i: Chọn dãy khóa K[i..n] ra khóa min và đảo vị
trí với ki
– …
– Lượt n – 1: Chọn dãy khóa K[n-1..n] ra khóa min
và đảo vị trí với K[n-1]
1 2 3 4 5 6 7 8
i=1
7
7 3 9 2 15 1
Tìm phần tử nhỏ nhất đầu tiên
10 5
min
b. Mô phỏng thuật toán kiểu chọnb. Mô phỏng thuật toán kiểu chọn
1 2 3 4 5 6 7 8
i=2
8
7 3 9 2 15 10
Tìm phần tử nhỏ nhất trong dãy còn lại
1 5
min
1 2 3 4 5 6 7 8
i=3
9
7 3 9 5 15 101 2
min
Tìm phần tử nhỏ nhất trong dãy còn lại
min
1 2 3 4 5 6 7 8
i=4
10
3 7 9 5 15 101 2
Tìm phần tử nhỏ nhất trong dãy còn lại
min
1 2 3 4 5 6 7 8
i=5
11
3 5 9 7 15 10
Tìm phần tử nhỏ nhất trong dãy còn lại
1 2
min
1 2 3 4 5 6 7 8
i=6
12
3 5 7 9 15 101 2
Tìm phần tử nhỏ nhất trong dãy còn lại
min
1 2 3 4 5 6 7 8
i=7
13
3 5 7 9 15 101 2
Tìm phần tử nhỏ nhất trong dãy còn lại
1 2 3 4 5 6 7 8
i=8
14
3 5 7 9 10 151 2
Kết thúc vì chỉ
còn 1 phần tử
Tìm phần tử nhỏ nhất trong dãy còn lại
c. Cài đặtc. Cài đặt
Procedure SelectionSort;
Var i, j, jmin: integer;
Begin
for i := 1 to n-1 do begin
jmin := i;
for j := i+1 to n do
if K[j] < K[jmin] then jmin := j;
if jmin <> j then swap
(K[jmin],K[i]);
end;
End;
d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện
• Coi phép so sánh K[j] < K[jmin] là phép
toán tích cực
• Ở lượt thứ i để chọn ra khóa min cần n-i
phép toán tích cực (không phụ thuộc tình
trạng ban đầu của dãy)
• Tổng số phép so sánh phải thực hiện:
(n-1)+(n-2)+…+1 = n*(n-1)/2
• Thời gian thực hiện thuật toán là Θ(n2
)
22.. Sắp xếp kiểu chènSắp xếp kiểu chèn
(Insertion Sort)(Insertion Sort)
a. Ý tưởng thuật toán
b. Mô phỏng
c. Cài đặt
d. Đánh giá thời gian thực hiện
giải thuật
a. Ý tưởng thuật toán kiểu chèna. Ý tưởng thuật toán kiểu chèn
• Xét dãy khóa K[1..n] ta thấy dãy con chỉ gồm
1 khóa K1 có thể coi là đã sắp xếp.
• Với 2 ≤ i ≤ n giả sử i-1 phần tử đầu của dãy
đã được sắp xếp:
K1 ≤ K2 ≤ … ≤ Ki-1
Khi đó chèn phần tử Ki vào một vị trí hợp lí
trong đoạn đầu gồm i-1 phần tử đã được sắp
xếp
• Thực hiện quy trình này lần lượt với i từ 2 n→
và cho 1 dãy khóa đã sắp xếp sau khi kết thúc
1 2 3 4 5 6 7 8
i=2
19
7 3 9 2 15 1
Tìm vị trí chèn cho phần tử thứ 2
10 5
b. Mô phỏng thuật toán kiểu chènb. Mô phỏng thuật toán kiểu chèn
1 2 3 4 5 6 7 8
i=3
20
7 3 9 2 15 1
Tìm vị trí chèn cho phần tử thứ 3
5 10
1 2 3 4 5 6 7 8
i=4
21
10 3 9 2 15 1
Tìm vị trí chèn cho phần tử thứ 4
5 7
1 2 3 4 5 6 7 8
i=5
22
7 10 9 2 15 1
Tìm vị trí chèn cho phần tử thứ 5
3 5
1 2 3 4 5 6 7 8
i=6
23
7 9 10 2 15 1
Tìm vị trí chèn cho phần tử thứ 6
3 5
1 2 3 4 5 6 7 8
i=7
24
5 7 9 10 15 1
Tìm vị trí chèn cho phần tử thứ 7
2 3
1 2 3 4 5 6 7 8
i=8
25
5 7 9 10 15 1
Tìm vị trí chèn cho phần tử thứ 8
2 3
1 2 3 4 5 6 7 8
i=9
26
3 5 7 9 10 151 2
Kết
thúc
Procedure InsertionSort;
Var i, j: integer; temp: Tkey;
Begin
For i := 2 to n do Begin
temp := K[i]; j := i–1;
while (j>0) and (temp<K[j]) do
begin K[j+1]:=K[i]; j:=j-1; end;
K[j+1] := temp;
end;
End;
c. Cài đặtc. Cài đặt
d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện
• Coi phép toán tích cực là phép kiểm tra
điều kiện: (j>0)and(temp<K[j])
• Chi phí thời gian thực hiện phụ thuộc
vào tình trạng khóa ban đầu.
Trường
hợp
Số lần thực hiện
phép toán
Thời gian thực hiện
Xấu
nhất
n-1 Θ(n)
Tốt
nhất
(n-1)(n+2)/2 Θ(n2
)
3. Sắp xếp kiểu nổi bọt3. Sắp xếp kiểu nổi bọt
(Buble Sort)(Buble Sort)
a. Ý tưởng thuật toán
b. Mô phỏng
c. Cài đặt
d. Đánh giá thời gian thực hiện
giải thuật
a. Ý tưởng thuật toán kiểu nổi bọta. Ý tưởng thuật toán kiểu nổi bọt
• Dãy khóa K sẽ được duyệt từ cuối lên
đầu dãy nếu gặp khóa kế cận ngược thứ
tự thì đổi chỗ chúng cho nhau.
• Sau lần duyệt như vậy khóa nhỏ nhất
trong dãy khóa sẽ được chuyển về vị trí
đầu tiên.
• Vấn đề được lặp lại với việc sắp xếp dãy
khóa K[2..n]
1
2
3
4
5
6
7
8
31
7
3
9
2
15
1
10
5
i
j
b. Mô phỏng thuật toán nổi bọtb. Mô phỏng thuật toán nổi bọt
1
2
3
4
5
6
7
8
32
7
3
9
2
15
1
10
5
i
j
1
2
3
4
5
6
7
8
33
7
3
9
2
15
1
10
5
i
j
1
2
3
4
5
6
7
8
34
7
3
9
2
15
1
10
5
i
j
1
2
3
4
5
6
7
8
35
7
3
9
2
15
1
10
5i
j
1
2
3
4
5
6
7
8
36
7
3
9
2
15
1
10
5
i
j
1
2
3
4
5
6
7
8
37
7
3
9
2
15
1
10
5
i
j
1
2
3
4
5
6
7
8
38
7
3
9
2
15
1
10
5
i
c. Cài đặtc. Cài đặt
Procedure BubleSort;
Var i, j: integer;
Begin
For i := 2 to n do
for j := n downto i do
if K[j]<K[j-1] then
swap(K[j],K[j-1]);
End;
d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện
• Coi phép toán tích cực là: K[j]<K[j-1]
• Số lần thực hiện phép so sánh:
n(n-1)/2
• Thời gian thực hiện thuật toán: Θ(n2
)
So sánh 3 giải thuậtSo sánh 3 giải thuật
Giải thuật Thời gian
SelectionSort Θ(n2
)
InsertionSort Θ(n) Θ(n2
)
BubleSort Θ(n2
)
InsertSort tỏ ra
“tốt hơn” so với hai
phương pháp kia
nhưng với n khá
lớn thì chi phí thời
gian thực hiện của
cả 3 phương pháp
đều là Θ(n2
) và
đây vẫn là chi phí
cao

More Related Content

What's hot

Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Nguyễn Công Hoàng
 
Lý thuyết độ phức tạp
Lý thuyết độ phức tạp Lý thuyết độ phức tạp
Lý thuyết độ phức tạp Tran Thom
 
Bài kiểm tra số 1
Bài kiểm tra số 1Bài kiểm tra số 1
Bài kiểm tra số 1Đỗ Hương
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtHưởng Nguyễn
 
Multithreaded algorithms
Multithreaded algorithmsMultithreaded algorithms
Multithreaded algorithmsSoicon Karo
 
đề Thi vào 10 ptnk 2012 không chuyên truonghocso.com
đề Thi vào 10 ptnk 2012 không chuyên   truonghocso.comđề Thi vào 10 ptnk 2012 không chuyên   truonghocso.com
đề Thi vào 10 ptnk 2012 không chuyên truonghocso.comThế Giới Tinh Hoa
 
Biến đổi và đổi biến hàm tích phân bậc 2
Biến đổi và đổi biến hàm tích phân bậc 2Biến đổi và đổi biến hàm tích phân bậc 2
Biến đổi và đổi biến hàm tích phân bậc 2Thế Giới Tinh Hoa
 
Pvt dao ham da 11
Pvt dao ham da 11Pvt dao ham da 11
Pvt dao ham da 1114149201
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02giang
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiSai Lemovom
 
đáP án đh-toán a- 2010
đáP án đh-toán a- 2010đáP án đh-toán a- 2010
đáP án đh-toán a- 2010ntquangbs
 
đáP án toán đh ka 2010
đáP án toán đh ka 2010đáP án toán đh ka 2010
đáP án toán đh ka 2010ntquangbs
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTMasterCode.vn
 

What's hot (20)

Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
 
Lý thuyết độ phức tạp
Lý thuyết độ phức tạp Lý thuyết độ phức tạp
Lý thuyết độ phức tạp
 
Bài kiểm tra số 1
Bài kiểm tra số 1Bài kiểm tra số 1
Bài kiểm tra số 1
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
 
Multithreaded algorithms
Multithreaded algorithmsMultithreaded algorithms
Multithreaded algorithms
 
đề Thi vào 10 ptnk 2012 không chuyên truonghocso.com
đề Thi vào 10 ptnk 2012 không chuyên   truonghocso.comđề Thi vào 10 ptnk 2012 không chuyên   truonghocso.com
đề Thi vào 10 ptnk 2012 không chuyên truonghocso.com
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 
Biến đổi và đổi biến hàm tích phân bậc 2
Biến đổi và đổi biến hàm tích phân bậc 2Biến đổi và đổi biến hàm tích phân bậc 2
Biến đổi và đổi biến hàm tích phân bậc 2
 
Pvt dao ham da 11
Pvt dao ham da 11Pvt dao ham da 11
Pvt dao ham da 11
 
Bai tap c++
Bai tap c++Bai tap c++
Bai tap c++
 
MATMAT- Chuong1
MATMAT- Chuong1MATMAT- Chuong1
MATMAT- Chuong1
 
Ex chapter 6
Ex chapter 6Ex chapter 6
Ex chapter 6
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhai
 
đáP án đh-toán a- 2010
đáP án đh-toán a- 2010đáP án đh-toán a- 2010
đáP án đh-toán a- 2010
 
Hệ mật mã Rabin
Hệ mật mã RabinHệ mật mã Rabin
Hệ mật mã Rabin
 
đáP án toán đh ka 2010
đáP án toán đh ka 2010đáP án toán đh ka 2010
đáP án toán đh ka 2010
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
 
Hệ mật mã Rabin
Hệ mật mã RabinHệ mật mã Rabin
Hệ mật mã Rabin
 
Hệ mật mã merkle
Hệ mật mã merkleHệ mật mã merkle
Hệ mật mã merkle
 

Viewers also liked

ThermaQ Innovative Heating System overview
ThermaQ Innovative Heating System overviewThermaQ Innovative Heating System overview
ThermaQ Innovative Heating System overviewMajdi Ashour
 
Gondman Copy of Achievement Certificate
Gondman Copy of Achievement CertificateGondman Copy of Achievement Certificate
Gondman Copy of Achievement CertificateGOODMAN RIKHOTSO
 
Hamarrekoak 90 arte
Hamarrekoak 90 arteHamarrekoak 90 arte
Hamarrekoak 90 arteJavi Muñoz
 
Plaques Bronze MAJ Fortier (1)
Plaques Bronze MAJ Fortier (1)Plaques Bronze MAJ Fortier (1)
Plaques Bronze MAJ Fortier (1)Catherine Refour
 
Presentació sense títol (1)
Presentació sense títol (1)Presentació sense títol (1)
Presentació sense títol (1)amalia1999
 
Presentación Diana Manchay
Presentación Diana ManchayPresentación Diana Manchay
Presentación Diana Manchaydianastefi19
 
пхайко марія, красноармійський нвк донецької області
пхайко марія, красноармійський нвк донецької областіпхайко марія, красноармійський нвк донецької області
пхайко марія, красноармійський нвк донецької областіДенис Ивко
 

Viewers also liked (7)

ThermaQ Innovative Heating System overview
ThermaQ Innovative Heating System overviewThermaQ Innovative Heating System overview
ThermaQ Innovative Heating System overview
 
Gondman Copy of Achievement Certificate
Gondman Copy of Achievement CertificateGondman Copy of Achievement Certificate
Gondman Copy of Achievement Certificate
 
Hamarrekoak 90 arte
Hamarrekoak 90 arteHamarrekoak 90 arte
Hamarrekoak 90 arte
 
Plaques Bronze MAJ Fortier (1)
Plaques Bronze MAJ Fortier (1)Plaques Bronze MAJ Fortier (1)
Plaques Bronze MAJ Fortier (1)
 
Presentació sense títol (1)
Presentació sense títol (1)Presentació sense títol (1)
Presentació sense títol (1)
 
Presentación Diana Manchay
Presentación Diana ManchayPresentación Diana Manchay
Presentación Diana Manchay
 
пхайко марія, красноармійський нвк донецької області
пхайко марія, красноармійський нвк донецької областіпхайко марія, красноармійський нвк донецької області
пхайко марія, красноармійський нвк донецької області
 

Similar to 3giaithuatsxep t lan

Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánVan Vo
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTrần Nguyên
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Nguyễn Công Hoàng
 
Bai tap lap trinh
Bai tap lap trinhBai tap lap trinh
Bai tap lap trinhHồ Lợi
 
Tai lieu boi duong doi tuyen quoc gia 2013 3
Tai lieu boi duong doi tuyen quoc gia 2013 3Tai lieu boi duong doi tuyen quoc gia 2013 3
Tai lieu boi duong doi tuyen quoc gia 2013 3nataliej4
 
Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxepHồ Lợi
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxepnhà tôi
 
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau kho
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau khoTai lieu rat hay ve chuyen de tinh tong chuoi so hay cau kho
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau khoNguyễn Nhật Chung
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xephiep0109
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
07 chương 5. lý thuyết số (2)
07  chương 5. lý thuyết số (2)07  chương 5. lý thuyết số (2)
07 chương 5. lý thuyết số (2)Andy Nhân
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xepquang
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xepquang
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyMinh Ngoc Tran
 

Similar to 3giaithuatsxep t lan (20)

Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
Gt de quy_2
Gt de quy_2Gt de quy_2
Gt de quy_2
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
 
Bai tap lap trinh
Bai tap lap trinhBai tap lap trinh
Bai tap lap trinh
 
CHƯƠNG 2.pdf
CHƯƠNG 2.pdfCHƯƠNG 2.pdf
CHƯƠNG 2.pdf
 
Tai lieu boi duong doi tuyen quoc gia 2013 3
Tai lieu boi duong doi tuyen quoc gia 2013 3Tai lieu boi duong doi tuyen quoc gia 2013 3
Tai lieu boi duong doi tuyen quoc gia 2013 3
 
Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxep
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxep
 
Pt to-hop-nhi-thuc-newton
Pt to-hop-nhi-thuc-newtonPt to-hop-nhi-thuc-newton
Pt to-hop-nhi-thuc-newton
 
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau kho
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau khoTai lieu rat hay ve chuyen de tinh tong chuoi so hay cau kho
Tai lieu rat hay ve chuyen de tinh tong chuoi so hay cau kho
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xep
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Olympiad help
Olympiad helpOlympiad help
Olympiad help
 
07 chương 5. lý thuyết số (2)
07  chương 5. lý thuyết số (2)07  chương 5. lý thuyết số (2)
07 chương 5. lý thuyết số (2)
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
 
Chap2 new
Chap2 newChap2 new
Chap2 new
 

3giaithuatsxep t lan

  • 1. CÁC GIẢI THUẬTCÁC GIẢI THUẬT SẮP XẾPSẮP XẾP
  • 2. SẮP XẾPSẮP XẾP I. Bài toán sắp xếp II. Một số thuật toán sắp xếp 1. Sắp xếp kiểu chọn (Selection Sort) 2. Sắp xếp kiểu chèn (Insertion Sort) 3. Sắp xếp kiểu nổi bọt (Buble Sort)
  • 3. I. Bài toán sắp xếpI. Bài toán sắp xếp • Cho dãy K = (k1, k2, …, kn) gồm n phần tử gọi là khóa. Giữa hai khóa bất kì có quan hệ “≤”. Bài toán yêu cầu hoán vị các phần tử của K để: k1 ≤ k2 ≤ k3 ≤… ≤ kn
  • 4. II. Một số thuật toán sắp xếpII. Một số thuật toán sắp xếp 1.Sắp xếp kiểu chọn (Selection Sort) 2.Sắp xếp kiểu chèn (Insertion Sort) 3.Sắp xếp kiểu nổi bọt (Buble Sort)
  • 5. 1. Sắp xếp kiểu chọn1. Sắp xếp kiểu chọn (Selection Sort)(Selection Sort) a. Ý tưởng thuật toán b. Mô phỏng c. Cài đặt d. Đánh giá thời gian thực hiện giải thuật
  • 6. a. Ý tưởng thuật toán kiểu chọna. Ý tưởng thuật toán kiểu chọn • Thực hiện n – 1 lượt việc đưa phần tử min trong dãy hiện hành về vị trí đúng ở đầu dãy: – Lượt 1: Chọn dãy khóa K[1..n] ra khóa min và đảo vị trí với k1 – Lượt 2: Chọn dãy khóa K[2..n] ra khóa min và đảo vị trí với k2 – … – Lượt i: Chọn dãy khóa K[i..n] ra khóa min và đảo vị trí với ki – … – Lượt n – 1: Chọn dãy khóa K[n-1..n] ra khóa min và đảo vị trí với K[n-1]
  • 7. 1 2 3 4 5 6 7 8 i=1 7 7 3 9 2 15 1 Tìm phần tử nhỏ nhất đầu tiên 10 5 min b. Mô phỏng thuật toán kiểu chọnb. Mô phỏng thuật toán kiểu chọn
  • 8. 1 2 3 4 5 6 7 8 i=2 8 7 3 9 2 15 10 Tìm phần tử nhỏ nhất trong dãy còn lại 1 5 min
  • 9. 1 2 3 4 5 6 7 8 i=3 9 7 3 9 5 15 101 2 min Tìm phần tử nhỏ nhất trong dãy còn lại
  • 10. min 1 2 3 4 5 6 7 8 i=4 10 3 7 9 5 15 101 2 Tìm phần tử nhỏ nhất trong dãy còn lại
  • 11. min 1 2 3 4 5 6 7 8 i=5 11 3 5 9 7 15 10 Tìm phần tử nhỏ nhất trong dãy còn lại 1 2
  • 12. min 1 2 3 4 5 6 7 8 i=6 12 3 5 7 9 15 101 2 Tìm phần tử nhỏ nhất trong dãy còn lại
  • 13. min 1 2 3 4 5 6 7 8 i=7 13 3 5 7 9 15 101 2 Tìm phần tử nhỏ nhất trong dãy còn lại
  • 14. 1 2 3 4 5 6 7 8 i=8 14 3 5 7 9 10 151 2 Kết thúc vì chỉ còn 1 phần tử Tìm phần tử nhỏ nhất trong dãy còn lại
  • 15. c. Cài đặtc. Cài đặt Procedure SelectionSort; Var i, j, jmin: integer; Begin for i := 1 to n-1 do begin jmin := i; for j := i+1 to n do if K[j] < K[jmin] then jmin := j; if jmin <> j then swap (K[jmin],K[i]); end; End;
  • 16. d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện • Coi phép so sánh K[j] < K[jmin] là phép toán tích cực • Ở lượt thứ i để chọn ra khóa min cần n-i phép toán tích cực (không phụ thuộc tình trạng ban đầu của dãy) • Tổng số phép so sánh phải thực hiện: (n-1)+(n-2)+…+1 = n*(n-1)/2 • Thời gian thực hiện thuật toán là Θ(n2 )
  • 17. 22.. Sắp xếp kiểu chènSắp xếp kiểu chèn (Insertion Sort)(Insertion Sort) a. Ý tưởng thuật toán b. Mô phỏng c. Cài đặt d. Đánh giá thời gian thực hiện giải thuật
  • 18. a. Ý tưởng thuật toán kiểu chèna. Ý tưởng thuật toán kiểu chèn • Xét dãy khóa K[1..n] ta thấy dãy con chỉ gồm 1 khóa K1 có thể coi là đã sắp xếp. • Với 2 ≤ i ≤ n giả sử i-1 phần tử đầu của dãy đã được sắp xếp: K1 ≤ K2 ≤ … ≤ Ki-1 Khi đó chèn phần tử Ki vào một vị trí hợp lí trong đoạn đầu gồm i-1 phần tử đã được sắp xếp • Thực hiện quy trình này lần lượt với i từ 2 n→ và cho 1 dãy khóa đã sắp xếp sau khi kết thúc
  • 19. 1 2 3 4 5 6 7 8 i=2 19 7 3 9 2 15 1 Tìm vị trí chèn cho phần tử thứ 2 10 5 b. Mô phỏng thuật toán kiểu chènb. Mô phỏng thuật toán kiểu chèn
  • 20. 1 2 3 4 5 6 7 8 i=3 20 7 3 9 2 15 1 Tìm vị trí chèn cho phần tử thứ 3 5 10
  • 21. 1 2 3 4 5 6 7 8 i=4 21 10 3 9 2 15 1 Tìm vị trí chèn cho phần tử thứ 4 5 7
  • 22. 1 2 3 4 5 6 7 8 i=5 22 7 10 9 2 15 1 Tìm vị trí chèn cho phần tử thứ 5 3 5
  • 23. 1 2 3 4 5 6 7 8 i=6 23 7 9 10 2 15 1 Tìm vị trí chèn cho phần tử thứ 6 3 5
  • 24. 1 2 3 4 5 6 7 8 i=7 24 5 7 9 10 15 1 Tìm vị trí chèn cho phần tử thứ 7 2 3
  • 25. 1 2 3 4 5 6 7 8 i=8 25 5 7 9 10 15 1 Tìm vị trí chèn cho phần tử thứ 8 2 3
  • 26. 1 2 3 4 5 6 7 8 i=9 26 3 5 7 9 10 151 2 Kết thúc
  • 27. Procedure InsertionSort; Var i, j: integer; temp: Tkey; Begin For i := 2 to n do Begin temp := K[i]; j := i–1; while (j>0) and (temp<K[j]) do begin K[j+1]:=K[i]; j:=j-1; end; K[j+1] := temp; end; End; c. Cài đặtc. Cài đặt
  • 28. d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện • Coi phép toán tích cực là phép kiểm tra điều kiện: (j>0)and(temp<K[j]) • Chi phí thời gian thực hiện phụ thuộc vào tình trạng khóa ban đầu. Trường hợp Số lần thực hiện phép toán Thời gian thực hiện Xấu nhất n-1 Θ(n) Tốt nhất (n-1)(n+2)/2 Θ(n2 )
  • 29. 3. Sắp xếp kiểu nổi bọt3. Sắp xếp kiểu nổi bọt (Buble Sort)(Buble Sort) a. Ý tưởng thuật toán b. Mô phỏng c. Cài đặt d. Đánh giá thời gian thực hiện giải thuật
  • 30. a. Ý tưởng thuật toán kiểu nổi bọta. Ý tưởng thuật toán kiểu nổi bọt • Dãy khóa K sẽ được duyệt từ cuối lên đầu dãy nếu gặp khóa kế cận ngược thứ tự thì đổi chỗ chúng cho nhau. • Sau lần duyệt như vậy khóa nhỏ nhất trong dãy khóa sẽ được chuyển về vị trí đầu tiên. • Vấn đề được lặp lại với việc sắp xếp dãy khóa K[2..n]
  • 31. 1 2 3 4 5 6 7 8 31 7 3 9 2 15 1 10 5 i j b. Mô phỏng thuật toán nổi bọtb. Mô phỏng thuật toán nổi bọt
  • 39. c. Cài đặtc. Cài đặt Procedure BubleSort; Var i, j: integer; Begin For i := 2 to n do for j := n downto i do if K[j]<K[j-1] then swap(K[j],K[j-1]); End;
  • 40. d. Đánh giá thời gian thực hiệnd. Đánh giá thời gian thực hiện • Coi phép toán tích cực là: K[j]<K[j-1] • Số lần thực hiện phép so sánh: n(n-1)/2 • Thời gian thực hiện thuật toán: Θ(n2 )
  • 41. So sánh 3 giải thuậtSo sánh 3 giải thuật Giải thuật Thời gian SelectionSort Θ(n2 ) InsertionSort Θ(n) Θ(n2 ) BubleSort Θ(n2 ) InsertSort tỏ ra “tốt hơn” so với hai phương pháp kia nhưng với n khá lớn thì chi phí thời gian thực hiện của cả 3 phương pháp đều là Θ(n2 ) và đây vẫn là chi phí cao