Cu trúc dliu và Gii thut
Đỗ Bích Dip -Khoa CNTT - ĐHBKHN 1
Đỗ Bích Dip - Khoa CNTT
CutrúcdliuvàGiithut
Chương VI: Spxếp
7 2 9 4 2 4 7 9
7 2 2 7 9 4 4 9
7 72 29 94 4
Đỗ Bích Dip - Khoa CNTT
Chương VI: Spxếp
zNi dung
1. Bài toán spxếp
2. Ba phương pháp spxếpcơbn
1. Lachn, thêm dnvàđổich
2. Phân tích, đánh giá
3. Spxếpkiu hòa nhp
4. Spxếp nhanh
5. Spxếpkiuvunđống
6. Mtsphương pháp spxếpđặcbit
Cu trúc dliu và Gii thut
Đỗ Bích Dip -Khoa CNTT - ĐHBKHN 2
Đỗ Bích Dip - Khoa CNTT
Bài toán Spxếp
Spxếplimttp các phntdliu theo chiu
tăng dnhocgimdn
23 78 45 832 56
823 32 45 78 56
Đỗ Bích Dip - Khoa CNTT
Bài toán Spxếp
Khóa spxếp
zMtbphncabn ghi biudinđốitượng đượcsp
zKhóa s đượcsdng để xác định thtspxếpbn ghi
trong mttpcácbnghi
Bng khóa:
zSdng trong spxếpkhimunhnchếvicdichuyncác
bnghidliu
zMttpcácbn ghi chcha hai trường
Khóa: cha khóa spxếp
Link: Con trghi địachcabn ghi đốitượng dliutương ng
zThtcác bn ghi trong bng khóa cho phép xác định tht
cacácbn ghi dliu
Cu trúc dliu và Gii thut
Đỗ Bích Dip -Khoa CNTT - ĐHBKHN 3
Đỗ Bích Dip - Khoa CNTT
Các loithuttoánSpxếp
ExchangeSelectionInsertion
Internal External
Sorts
•Insertion
•Shell
Selection
•Heap
Bubble
•Quick
Natural
Balanced
Polyphase
Đỗ Bích Dip - Khoa CNTT
Bài toán Spxếp
Các đặctrưng cathut toán spxếp
zTính nđịnh cathut toán spxếp
Các phnt cùng khóa sginguyên thttương
đốica chúng nhưtrướckhispxếp
zTính tich
Thut toán đòi hi không gian nhph hng s(không
phthucvàoslượng phnttrong dãy cnsp)
78 845 832 56 8832 45 56 78
Cu trúc dliu và Gii thut
Đỗ Bích Dip -Khoa CNTT - ĐHBKHN 4
Đỗ Bích Dip - Khoa CNTT
Bài toán Spxếp
Trong chương này, bài toán spxếpđượcđơn
ginhóadướidng nhưsau
zĐầu vào: Mt dãy các snguyên a1, a2, …, an
zĐầura: Mt hoán vcadãysốđãchotrongđó các giá
trịđưcspxếp theo chiutăng dn
Đỗ Bích Dip - Khoa CNTT
Ba phương pháp spxếpcơbn
1. Spxếpkiulachn (Selection Sort)
2. Spxếpkiu thêm dn (Insertion Sort)
3. Spxếpkiuđổich-Spxếpkiunibt
(Buble Sort)
Cu trúc dliu và Gii thut
Đỗ Bích Dip -Khoa CNTT - ĐHBKHN 5
Đỗ Bích Dip - Khoa CNTT
Spxếpkiulachn Selection Sort
Ý tưởng:
zTimilượt, chnphntnhnhttrong scác phn
tchưađượcsp. Đưaphntửđưcchnvàovtrí
đúng bng phép đổich.
zSau lượtthi (i = 1..n-1) , dãy cnsp coi nhưđưc
chia thành 2 phn
Phnđãsp: tvtrí 1 đếni
Phnchưasp: tvtrí i +1 đếnn
Đỗ Bích Dip - Khoa CNTT
Spxếpkiulachn
d: Spxếp dãy sau theo thttăng dn:
zA = {12, 5, 3, 10, 18, 4, 9, 16}
1816161616161616
161818109999
1212121212544
1010101818181818
999910101010
5555512123
44444455
333333312
Lượt7Lượt6Lượt5Lượt4Lượt3Lượt2Lượt1