Saép xeáp theo phöông phaùp cô soá Radix Sort
• Radix Sort laø moät thuaät toaùn tieáp caän theo moät höôùng hoaøn toaøn khaùc.
• Neáu nhö trong caùc thuaät toaùn khaùc, cô sôû ñeå saép xeáp luoân laø vieäc so saùnh giaù trò cuûa 2 phaàn töû thì Radix Sort laïi döïa treân nguyeân taéc phaân loaïi thö cuûa böu ñieän. Vì lyù do ñoù Radix Sort coøn coù teân laø Postman’s sort.
• Radix Sort khoâng heà quan taâm ñeán vieäc so saùnh giaù trò cuûa phaàn töû maø baûn thaân vieäc phaân loaïi vaø trình töï phaân loaïi seõ taïo ra thöù töï cho caùc phaàn töû.
177177
Saép xeáp theo phöông phaùp cô soá Radix Sort
• Ñeå chuyeån moät khoái löôïng thö lôùn ñeán tay ngöôøi nhaän ôû nhieàu ñòa phöông khaùc nhau, böu ñieän thöôøng toå
chöùc moät heä thoáng phaân loaïi thö phaân caáp.
• Tröôùc tieân, caùc thö ñeán cuøng moät tænh, thaønh phoá seõ ñöôïc saép chung vaøo moät loâ ñeå göûi ñeán tænh thaønh töông öùng.
• Böu ñieän caùc tænh thaønh naøy laïi thöïc hieän coâng vieäc töông töï. Caùc thö ñeán cuøng moät quaän, huyeän seõ ñöôïc xeáp vaøo chung moät loâ vaø göûi ñeán quaän, huyeän töông öùng.
• Cöù nhö vaäy, caùc böùc thö seõ ñöôïc trao ñeán tay ngöôøi nhaän moät caùch coù heä thoáng maø coâng vieäc saép xeáp thö khoâng quaù naëng nhoïc.
178178
Saép xeáp theo phöông phaùp cô soá Radix Sort
• Moâ phoûng laïi qui trình treân, ñeå saép xeáp daõy a1, a2, ..., an, giaûi thuaät Radix Sort thöïc hieän nhö sau:
– Tröôùc tieân, ta coù theå giaû söû moãi phaàn töû ai trong daõy a1, a2, ..., an laø moät soá nguyeân coù toái ña m chöõ soá.
– Ta phaân loaïi caùc phaàn töû laàn löôït theo caùc chöõ soá haøng ñôn vò, haøng chuïc, haøng traêm, … töông töï vieäc phaân loaïi thö theo tænh thaønh, quaän huyeän, phöôøng xaõ, ….
179179
Saép xeáp theo phöông phaùp cô soá Radix Sort
• Böôùc 1 :// k cho bieát chöõ soá duøng ñeå phaân loaïi hieän haønh
– k = 0; // k = 0: haøng ñôn vò; k = 1: haøng chuïc; …
• Böôùc 2 : //Taïo caùc loâ chöùa caùc loaïi phaàn töû khaùc nhau
– Khôûi taïo 10 loâ B0, B1, …, B9 roãng;
• Böôùc 3 :
– For i = 1 .. n do
• Ñaët aivaøo loâ Btvôùi t: chöõ soá thöù k cuûa ai;
• Böôùc 3 :
– Noái B0, B1, …, B9 laïi (theo ñuùng trình töï) thaønh a.
• Böôùc 4 :
– k = k+1;Neáu k < m thì trôû laïi böôùc 2. Ngöôïc laïi: Döøng
Saép xeáp theo phöông phaùp cô soá Radix Sort
181181
Saép xeáp theo phöông phaùp cô soá Radix Sort
182182
Saép xeáp theo phöông phaùp cô soá Radix Sort
183183
Saép xeáp theo phöông phaùp cô soá Radix Sort
Saép xeáp theo phöông phaùp cô soá Radix Sort
185185
Saép xeáp theo phöông phaùp cô soá Radix Sort
• Ñaùnh giaù giaûi thuaät:
– Vôùi moät daõy n soá, moãi soá coù toái ña m chöõ soá, thuaät toaùn thöïc hieän m laàn caùc thao taùc phaân loâ vaø gheùp loâ.
– Trong thao taùc phaân loâ, moãi phaàn töû chæ ñöôïc xeùt ñuùng moät laàn, khi gheùp cuõng vaäy.
– Nhö vaäy, chi phí cho vieäc thöïc hieän thuaät toaùn hieån nhieân laø O(2mn) = O(n).
186186
Saép xeáp theo phöông phaùp cô soá Radix Sort
Nhaän xeùt:
– Sau laàn phaân phoái thöù k caùc phaàn töû cuûa A vaøo caùc loâ B0, B1, …, B9, vaø laáy ngöôïc trôû ra, neáu chæ xeùt ñeán k+1 chöõ soá cuûa caùc phaàn töû trong A, ta seõ coù moät maûng taêng daàn nhôø trình töï laáy ra töø 0 →→→→ 9. Nhaän xeùt naøy baûo ñaûm tính ñuùng ñaén cuûa thuaät toaùn.
– Thuaät toaùn coù ñoä phöùc taïp tuyeán tính neân hieäu quaû khi saép daõy coá raát nhieàu phaàn töû, nhaát laø khi khoùa saép xeáp khoâng quaù daøi so vôùi soá löôïng phaàn töû (ñieàu naøy thöôøng gaëp trong thöïc teá).
187187
Saép xeáp theo phöông phaùp cô soá Radix Sort
Nhaän xeùt:
– Thuaät toaùn khoâng coù tröôøng hôïp xaáu nhaát vaø toát nhaát. Moïi daõy soá ñeàu ñöôïc saép vôùi chi phí nhö nhau neáu chuùng coù cuøng soá phaàn töû vaø caùc khoùa coù cuøng chieàu daøi.
– Thuaät toaùn caøi ñaët thuaän tieän vôùi caùc maûng vôùi khoùa saép xeáp laø chuoãi (kyù töï hay soá) hôn laø khoùa soá nhö trong ví duï do traùnh ñöôïc chi phí laáy caùc chöõ soá cuûa töøng soá.
Saép xeáp theo phöông phaùp cô soá Radix Sort
Nhaän xeùt:
– Soá löôïng loâ lôùn (10 khi duøng soá thaäp phaân, 26 khi duøng chuoãi kyù töï tieáng Anh, …) nhöng toång kích thöôùc cuûa taát caû caùc loâ chæ baèng daõy ban ñaàu neân ta khoâng theå duøng maûng ñeå bieåu dieãn B. Nhö vaäy, phaûi duøng caáu truùc döõ lieäu ñoäng ñeå bieåu dieãn B
⇒
⇒
⇒
⇒ Radix Sort raát thích hôïp cho saép xeáp treân danh saùch lieân keát.