© Dương Thành Phết-www.thayphet.net Minh Họa Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần ðoạn cần sắp xếp i=1; j=3 L X=2 R L=1 R=3 Khoa CNTT Trường Cð CNTT TP.HCM This is trial v
Trang 1© Dương Thành Phết-www.thayphet.net
Minh Họa
Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần
ðoạn cần
sắp xếp
i=1; j=3
L X=2 R
L=1
R=3
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 2© Dương Thành Phết-www.thayphet.net
Minh Họa
Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần
ðoạn cần
sắp xếp
Không còn ñoạn nào cần sắp xếp
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 3ðoạn [1- 8]
ðoạn [4- 8]
ðoạn [5- 8]
ðoạn [6- 8]
ðoạn [6- 7]
ðoạn [4- 5]
ðoạn [1- 3]
This is trial version www.adultpdf.com
Trang 4© Dương Thành Phết-www.thayphet.net
Giải thuật:
Bước 1:
i=1;
Bước 2:
j=N;
Trong khi (j>i) thực hiện:
Nếu a[j]<a[j-1]: Hoán vị a[j] và a[j-1] j—;
Bước 3:
i=i+1;
Nếu i>N-1: Hết dãy, dừng Ngược lại: Lặp lại Bước 2
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 5© Dương Thành Phết-www.thayphet.net
Cài ðặt void QuickSort(int M[], int First, int Last){
int i, j, tam, x;
x = M[(First+Last)/2]; i = First; j = Last;
do { while (M[i] <x) i++;
while (M[j] > X) j ;
if (i <= j) {
tam=M[i];
M[i]=M[j];
M[j]=tam;
i++; j ;
} }while (i<= i);
QuickSort(M, First, j);
QuickSort (M, i, Last);
}
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 6ẹ Dương Thành Phết-www.thayphet.net
đánh giá giải thuật:
+ Trường hợp tốt nhất, khi mảng M có thứ tự tăng:
Số phép gán: Gmin = N-1
Số phép so sánh: Smin = NừLog2(N)/2
Số phép hoán vị: Hmin = 0 + Trường hợp xấu nhất, khi phần tử X ựược chọn
ở giữa dãy con là giá trị lớn nhất:
Số phép gán: Gmax = Nừ(N-1)/2
Số phép so sánh: Smax = (N-1)ừ(N-1)
Số phép hoán vị: Hmax = Nừ(N-1)/2 + Trung bình:
Số phép gán: Gavg = (N-1)ừ(N+2)/4
Số phép so sánh: Savg = Nừ[Log2(N)+2NỜ2]/4
Số phép hoán vị: Havg = Nừ(N-1)/4
Khoa CNTT Trường Cđ CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 7© Dương Thành Phết-www.thayphet.net
Chi phí trung bình O(n*log2n)
Chi phí cho trường hợp xấu nhất O(n2)
Chi phí này phụ thuộc vào cách chọn phần tử trục:
- Nếu chọn ñược phần tử có giá trị trung bình ta
sẽ chia thành 2 dãy bằng nhau
- Nếu chọn nhằm phần tử nhỏ nhất (hay lớn nhất) O(n2)
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 81 Trình bày tư tưởng và minh họa giải thuật tìm kiếm tuyến tính, tìm kiếm nhị phân
2 Cài ñặt thuật toán tìm tuyến tính bằng cách:
- Sử dụng vòng lặp for
- Sử dụng vòng lặp while
3 Trong trường hợp các phần tử của dãy ñã có thứ tự tăng (hoặc giảm) hãy cài ñặt lại thuật toán tìm nhị phân
2.3 Bài Tập
© Dương Thành Phết-www.thayphet.netThis is trial version Khoa CNTT Trường Cð CNTT TP.HCM
www.adultpdf.com
Trang 91 Trình bày tư tưởng và minh họa 5 giải thuật sắp xếp
2 Cài ñặt 5 giải thuật sắp xếp theo các trường hợp và ñiền kết quả số lần thực hiện các phép toán vào bảng sau:
© Dương Thành Phết-www.thayphet.netThis is trial version Khoa CNTT Trường Cð CNTT TP.HCM
www.adultpdf.com