intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình phân tích quy trình ứng dụng nguyên lý sử dụng cấu trúc dữ liệu và giải thuật p5

Chia sẻ: Sdfasf Fasf | Ngày: | Loại File: PDF | Số trang:5

66
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'giáo trình phân tích quy trình ứng dụng nguyên lý sử dụng cấu trúc dữ liệu và giải thuật p5', kỹ thuật - công nghệ, kiến trúc - xây dựng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Giáo trình phân tích quy trình ứng dụng nguyên lý sử dụng cấu trúc dữ liệu và giải thuật p5

  1. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O N N . y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o c u -tr a c k c u -tr a c k Laàn 7: First = 7 J: 8 9 10 2 5 10 10 15 20 22 M: 25 30 35 Laàn 8: First = 8 J: 9 10 2 5 10 10 15 20 22 25 M: 30 35 Laàn 9: First = 9 J: 10 2 5 10 10 15 20 22 25 30 M: 35 Sau 9 laàn ñi maûng M trôû thaønh: M: 2 5 10 10 15 20 22 25 30 35 - Phaân tích thuaät toaùn: + Trong moïi tröôøng hôïp: Soá pheùp gaùn: G = 0 Soá pheùp so saùnh: S = (N-1) + (N-2) + … + 1 = ½N(N-1) + Trong tröôøng hôïp toát nhaát: khi maûng ban ñaàu ñaõ coù thöù töï taêng Soá pheùp hoaùn vò: Hmin = 0 + Trong tröôøng hôïp xaáu nhaát: khi maûng ban ñaàu ñaõ coù thöù töï giaûm Soá pheùp hoaùn vò: Hmin = (N-1) + (N-2) + … + 1 = ½N(N-1) + Soá pheùp hoaùn vò trung bình: Havg = ¼N(N-1) - Nhaän xeùt veà thuaät toaùn noåi boït: + Thuaät toaùn saép xeáp noåi boït khaù ñôn giaûn, deã hieåu vaø deã caøi ñaët. + Trong thuaät toaùn saép xeáp noåi boït, moãi laàn ñi töø cuoái maûng veà ñaàu maûng thì phaàn töû nheï ñöôïc troài leân raát nhanh trong khi ñoù phaàn töû naëng laïi “chìm” xuoáng khaù chaäm chaïp do khoâng taän duïng ñöôïc chieàu ñi xuoáng (chieàu töø ñaàu maûng veà cuoái maûng). + Thuaät toaùn noåi boït khoâng phaùt hieän ra ñöôïc caùc ñoaïn phaàn töû naèm hai ñaàu cuûa maûng ñaõ naèm ñuùng vò trí ñeå coù theå giaûm bôùt quaõng ñöôøng ñi trong moãi laàn ñi. b. Thuaät toaùn saép xeáp döïa treân söï phaân hoaïch (Partitioning Sort): Thuaät toaùn saép xeáp döïa treân söï phaân hoaïch coøn ñöôïc goïi laø thuaät toaùn saép xeáp nhanh (Quick Sort). - Tö töôûng: + Phaân hoaïch daõy M thaønh 03 daõy con coù thöù töï töông ñoái thoûa maõn ñieàu kieän: Daõy con thöù nhaát (ñaàu daõy M) goàm caùc phaàn töû coù giaù trò nhoû hôn giaù trò trung bình cuûa daõy M, Trang: 23
  2. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O N N . y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o Daõy con thöù hai (giöõa daõy M) goàm caùc phaàn töû coù giaù trò baèng giaù trò trung bình c u -tr a c k c u -tr a c k cuûa daõy M, Daõy con thöù ba (cuoái daõy M) goàm caùc phaàn töû coù giaù trò lôùn hôn giaù trò trung bình cuûa daõy M, + Neáu daõy con thöù nhaát vaø daõy con thöù ba coù nhieàu hôn 01 phaàn töû thì chuùng ta laïi tieáp tuïc phaân hoaïch ñeä quy caùc daõy con naøy. + Vieäc tìm giaù trò trung bình cuûa daõy M hoaëc tìm kieám phaàn töû trong M coù giaù trò baèng giaù trò trung bình cuûa daõy M raát khoù khaên vaø maát thôøi gian. Trong thöïc teá, chuùng ta choïn moät phaàn töû baát kyø (thöôøng laø phaàn töû ñöùng ôû vò trí giöõa) trong daõy caùc phaàn töû caàn phaân hoaïch ñeå laøm giaù trò cho caùc phaàn töû cuûa daõy con thöù hai (daõy giöõa) sau khi phaân hoaïch. Phaàn töû naøy coøn ñöôïc goïi laø phaàn töû bieân (boundary element). Caùc phaàn töû trong daõy con thöù nhaát seõ coù giaù trò nhoû hôn giaù trò phaàn töû bieân vaø caùc phaàn töû trong daõy con thöù ba seõ coù giaù trò lôùn hôn giaù trò phaàn töû bieân. + Vieäc phaân hoaïch moät daõy ñöôïc thöïc hieän baèng caùch tìm caùc caëp phaàn töû ñöùng ôû hai daõy con hai beân phaàn töû giöõa (daõy 1 vaø daõy 3) nhöng bò sai thöù töï (phaàn töû ñöùng ôû daõy 1 coù giaù trò lôùn hôn giaù trò phaàn töû giöõa vaø phaàn töû ñöùng ôû daõy 3 coù giaù trò nhoû hôn giaù trò phaàn töû giöõa) ñeå ñoåi choã (hoaùn vò) cho nhau. - Thuaät toaùn: B1: First = 1 B2: Last = N B3: IF (First ≥ Last) //Daõy con chæ coøn khoâng quaù 01 phaàn töû Thöïc hieän Bkt B4: X = M[(First+Last)/2] //Laáy giaù trò phaàn töû giöõa B5: I = First //Xuaát phaùt töø ñaàu daõy 1 ñeå tìm phaàn töû coù giaù trò > X B6: IF (M[I] > X) Thöïc hieän B8 B7: ELSE B7.1: I++ B7.2: Laëp laïi B6 B8: J = Last //Xuaát phaùt töø cuoái daõy 3 ñeå tìm phaàn töû coù giaù trò < X B9: IF (M[J] < X) Thöïc hieän B11 B10: ELSE B10.1: J-- B10.2: Laëp laïi B9 B11: IF (I ≤ J) B11.1: Hoaùn_Vò(M[I], M[J]) B11.2: I++ B11.3: J-- B11.4: Laëp laïi B6 B12: ELSE B12.1: Phaân hoaïch ñeä quy daõy con töø phaàn töû thöù First ñeán phaàn töû thöù J B12.2: Phaân hoaïch ñeä quy daõy con töø phaàn töû thöù I ñeán phaàn töû thöù Last Bkt: Keát thuùc - Caøi ñaët thuaät toaùn: Trang: 24
  3. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O N N . y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o Haøm QuickSort coù prototype nhö sau: c u -tr a c k c u -tr a c k void QuickSort(T M[], int N); Haøm thöïc hieän vieäc saép xeáp N phaàn töû coù kieåu döõ lieäu T treân maûng M theo thöù töï taêng döïa treân thuaät toaùn saép xeáp nhanh. Haøm QuickSort söû duïng haøm phaân hoaïch ñeä quy PartitionSort ñeå thöïc hieän vieäc saép xeáp theo thöù töï taêng caùc phaàn töû cuûa moät daõy con giôùi haïn töø phaàn töû thöù First ñeán phaàn töû thöù Last treân maûng M. Haøm PartitionSort coù prototype nhö sau: void PartitionSort(T M[], int First, int Last); Noäi dung cuûa caùc haøm nhö sau: void PartitionSort(T M[], int First, int Last) { if (First >= Last) return; T X = M[(First+Last)/2]; int I = First; int J = Last; do { while (M[I] < X) I++; while (M[J] > X) J--; if (I
  4. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O N N . y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o I X = 15 J c u -tr a c k c u -tr a c k M: 45 55 25 20 15 5 25 30 10 3 I X = 15 J M: 3 55 25 20 15 5 25 30 10 45 I X = 15 J M: 3 10 25 20 15 5 25 30 55 45 I X = 15 M: 3 10 5 20 15 25 25 30 55 45 J First X = 15 I Last M: 3 10 5 15 20 25 25 30 55 45 J Phaân hoaïch caùc phaàn töû trong daõy con töø First -> J: First = 1 Last = J = 4 X = M[(1+4)/2] = M[2] = 10 First X = 10 Last M: 3 10 5 15 20 25 25 30 55 45 Phaân hoaïch: I X = 10 J M: 3 10 5 15 20 25 25 30 55 45 X = 10 J M: 3 10 5 15 20 25 25 30 55 45 I J X = 10 M: 3 5 10 15 20 25 25 30 55 45 I Phaân hoaïch caùc phaàn töû trong daõy con töø First -> J: First = 1 Last = J = 2 X = M[(1+2)/2] = M[1] = 3 First Last M: 3 5 10 15 20 25 25 30 55 45 X=3 Trang: 26
  5. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O N N . y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o Phaân hoaïch: c u -tr a c k c u -tr a c k I J M: 3 5 10 15 20 25 25 30 55 45 X=3 I≡J M: 3 5 10 15 20 25 25 30 55 45 X=3 J I M: 3 5 10 15 20 25 25 30 55 45 X=3 First J I Last M: 3 5 10 15 20 25 25 30 55 45 Phaân hoaïch caùc phaàn töû trong daõy con töø I -> Last: First = I = 3 Last = 4 X = M[(3+4)/2] = M[3] = 10 First Last M: 3 5 10 15 20 25 25 30 55 45 X = 10 Phaân hoaïch: I J M: 3 5 10 15 20 25 25 30 55 45 X = 10 I≡J M: 3 5 10 15 20 25 25 30 55 45 X = 10 J I M: 3 5 10 15 20 25 25 30 55 45 X = 10 First J I Last M: 3 5 10 15 20 25 25 30 55 45 Phaân hoaïch caùc phaàn töû trong daõy con töø I -> Last: First = I = 5 Last = 10 X = M[(5+10)/2] = M[7] = 25 First X = 25 Last M: 3 5 10 15 20 25 25 30 55 45 Phaân hoaïch: Trang: 27
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2