61 © 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 62 © Dương Thành Phết-www.thayphet.net Cài ðặt void bubblesort(t M[],int N) { for ( int i=0 ; i<N-1 ; i++) for(int j=N-1 ; j>i ; j ) if(M[j]<M[j-1]) { int tam=M[j]; M[j]=M[j-1]; M[j-1]=tam; } } Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 63 © Dương Thành Phết-www.thayphet.net ðánh giá giải thuật: Ðối với giải thuật nổi bọt, số lượng các phép so sánh xảy ra không phụ thuộc vào tình trạng của dãy số ban ñầu Nhưng số lượng phép hoán vị thực hiện tùy thuộc vào kết qủa so sánh Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 64 © Dương Thành Phết-www.thayphet.net Ý Tưởng: Phân hoạch dãy M thành 2 dãy con thỏa mãn ñiều kiện: “1/2 Dãy bên trái chứa các phần tử nhỏ hơn các phần tử của 1/2 Dãy bên phải” Nếu dãy con có nhiều hơn 1 phần tử thì thực hiện sắp xếp dãy con (ðệ qui). 2.2.6.Giải Thuật Sắp Xếp Nhanh – Quick Sort Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 65 © 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 10 5 7 3 9 2 15 1 ðoạn cần sắp xếp L=1 R=8 i=1; j=8 L R X=3 i j ðoạn 1 L=1 R=3 ðoạn 2 L=4 R=8 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 66 © 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 1 2 3 7 9 5 15 10 ðoạn cần sắp xếp i=4; j=8 L R X=5 i j L=1 R=3 L=4 R=8 ðoạn 1 ðoạn 2 L=4 R=5 L=5 R=8 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 67 © 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 1 2 3 5 9 7 15 10 ðoạn cần sắp xếp i=5; j=8 L R X=7 i j L=1 R=3 L=4 R=5 L=6 R=8 L=5 R=8 ðoạn 2 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 68 © 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 1 2 3 5 7 9 15 10 ðoạn cần sắp xếp i=6; j=8 L R X=15 i j L=1 R=3 L=4 R=5 L=6 R=8 L=6 R=7 ðoạn 1 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 69 © 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 1 2 3 5 7 9 10 15 ðoạn cần sắp xếp i=6; j=7 L R X=15 i j L=1 R=3 L=4 R=5 L=6 R=7 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 70 © 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 1 2 3 5 7 9 10 15 ðoạn cần sắp xếp i=4; j=5 L R X=5 i j L=1 R=3 L=4 R=5 Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com . hơn các phần tử của 1 /2 Dãy bên phải” Nếu dãy con có nhiều hơn 1 phần tử thì thực hiện sắp xếp dãy con (ðệ qui). 2. 2.6.Giải Thuật Sắp Xếp Nhanh – Quick Sort Khoa CNTT Trường Cð CNTT TP.HCM This. sánh Khoa CNTT Trường Cð CNTT TP.HCM This is trial version www.adultpdf.com 64 © Dương Thành Phết-www.thayphet.net Ý Tưởng: Phân hoạch dãy M thành 2 dãy con thỏa mãn ñiều kiện: “1 /2 Dãy bên trái. 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