Giải Thuật ðổi Chổ Trực Tiếp-Interchange Sort21 © Dương Thành Phết-www.thayphet.net Ý tưởng: Xuất phát từ ñầu dãy, tìm tất cả nghịch thế chứa phần tử này.. Triệt tiêu chúng bằng cách ñ
Trang 12.2.2 Giải Thuật ðổi Chổ Trực Tiếp-Interchange Sort
21
© Dương Thành Phết-www.thayphet.net
Ý tưởng:
Xuất phát từ ñầu dãy, tìm tất cả nghịch thế chứa phần tử này
Triệt tiêu chúng bằng cách ñổi chỗ phần tử này với phần tử tương ứng trong cặp nghịch thế
Lặp lại xử lý trên với các phần tử tiếp theo trong dãy
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
2
2
i=1 j=2 i=2 j=3 i=3 j=4 i=4 j=5 i=5 j=6 i=6 j=7 i=7
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 3© Dương Thành Phết-www.thayphet.net
2
12
2
2
2
2
2
Ban ñầu
Lần 1 Lần 2 Lần 3
Lần 4 Lần 5
Lần 6
Khoa CNTT Trường Cð CNTT TP.HCM
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ắt ñầu từ ñầu dãy
Bước 2 :
j = i+1;//tìm các phần tử a[j] < a[i], j>i
Bước 3 :
Trong khi j < N thực hiện Nếu a[j]<a[i]: ðổi chổ a[i] và a[j];
j = j+1;
Bước 4 :
i = i+1;
Nếu i < n: Lặp lại Bước 2
Ngược lại: Dừng
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 InterchangeSort(int a[], int N ) { int i, j,tam;
for (i = 0 ; i<N-1 ; i++)
for (j =i+1; j < N ; j++)
if(a[j ]< a[i])
{ tam=a[i];
a[i]=a[j];
a[j]=tam;
} }
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:
Đối với giải thuật ựổi chỗ trực tiếp, 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
Trang 72.2.3 Giải Thuật Chọn Trực Tiếp –Selection Sort
27
© Dương Thành Phết-www.thayphet.net
Ý Tưởng:
ðầu tiên dãy có N phần tử, ta chọn phần tử nhỏ nhất trong dãy ñổi chổ cho phần tử ñầu tiên
Tiếp theo, tìm phần tử nhỏ nhất của dãy n-1 phần tử còn lại trong dãy ñổi chổ cho phần tử thứ 2 của dãy
Quá trình trên thực hiên ñến khi nào trong mảng chỉ còn 1 phần tử thi dừng lại
Kết quả ñược mảng ñã sắp xếp tăng
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 8© 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
I=1
Min
11 45 28 73 61 7 23 16
11 45 28 73 61 7 23 16
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 9© Dương Thành Phết-www.thayphet.net
Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần
11 45 28 73 61 16 23 7
I=2
Min
11 45 28 73 61 7 23 16
Minh Họa
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 10© Dương Thành Phết-www.thayphet.net
Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần
7
I=3
Min
11 45 28 73 61 7 23 16
Minh Họa
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com