Thiết kế trang và lập trình - Tổng lượng tri thức cốt lõi và thực hành
Trang 11 C u trúc d li u 1
1.1 C u trúc d li u là gì? 2
1.2 C u trúc d li u c s 3
1.2.1 Ki u d li u c s 3
1.2.2 Ki u có c u trúc 4
1.2.3 Ki u d li u tr u t ng 7
1.3 C u trúc d li u h ng v n .8
1.3.1 C u trúc danh sách 8
1.3.2 Ng n x p 10
1.3.3 Hàng i 11
1.3.4 C u trúc cây 12
1.3.5 B m 17
2 Thu t toán 23
2.1 C s v thu t toán 24
2.1.1 Thu t toán là gì? 24
2.1.2 Thu t toán và c u trúc d li u 26
2.2 Các thu t toán 30
2.2.1 Thu t toán duy t 30
2.2.2 Thu t toán s p x p 34
2.2.3 Thu t toán qui 49
2.2.4 X lí xâu kí t 51
2.2.5 X lí t p 55
2.2.6 V hình 63
2.2.7 th 67
2.2.8 Tính toán s 71
2.2.9 Thu t toán i sánh 78
2.2.10 Thu t toán x p x và xác su t 82
2.3 ánh giá thu t toán 87
2.3.1 ánh giá theo ph c t p tính toán 87
2.3.2 ánh giá theo tính h p l 88
2.3.3 ánh giá theo bi u di n 88
2.4 Cách thi t k thu t toán 89
3 Thi t k trong 95
3.1 Thi t k trong là gì? 96
3.1.1 M c ích c a thi t k trong và nh ng m c n l u ý 96
3.1.2 Th t c thi t k trong 97
3.2 Phân ho ch và c u trúc ch c n ng 101
3.2.1 Các n v c a vi c phân ho ch và c u trúc ch c n ng 101
3.2.2 Các th t c phân ho ch và c u trúc ch c n ng 103
3.2.3 Ph ng pháp thi t k có c u trúc 109
3.3 Thi t k d li u v t lí 112
3.3.1 Th t c thi t k d li u v t lí 112
3.3.2 T ch c d li u v t lí 117
3.4 Thi t k vào ra chi ti t 120
3.4.1 Thi t k d li u vào chi ti t 120
3.4.2 Thi t k màn hình 123
Trang 23.4.3 Thi t k d li u a ra chi ti t 132
3.5 T o ra và dùng l i các b ph n 136
3.5.1 Khái ni m v t o ra và dùng l i các b ph n 136
3.5.2 Dùng gói ph n m m 136
3.6 T o ra tài li u thi t k trong 137
3.6.1 T ch c tài li u thi t k trong 137
3.6.2 Các m c n l u ý khi t o ra tài li u thi t k trong 139
3.6.3 Ki m m thi t k 140
4 Thi t k ch ng trình 140
4.1 M c ích và nhi m v c a thi t k ch ng trình 144
4.1.1 M c ích c a thi t k ch ng trình 144
4.1.2 Nhi m v thi t k ch ng trình 145
4.2 Thi t k có c u trúc cho ch ng trình 148
4.2.1 Th t c thi t k có c u trúc 148
4.2.2 Các k thu t phân ho ch mô un n hình 151
4.2.3 Tiêu chí cho vi c phân ho ch mô un 160
4.2.4 Phân ho ch ch ng trình 171
4.3 T o ra c t mô un và c t ki m th 173
4.3.1 T o ra c t mô un 173
4.3.2 T o ra c t ki m th 175
4.4 T o ra tài li u thi t k ch ng trình 177
4.4.1 T o ra tài li u thi t k ch ng trình và n i dung 177
4.4.2 Nh ng m c n l u ý khi t o ra tài li u thi t k ch ng trình 179
4.4.3 H p ki m m thi t k 179
5 Th c hi n ch ng trình 183
5.1 L p trình 184
5.1.1 Mô th c l p trình 184
5.1.2 Phong cách l p trình 185
5.1.3 Dùng b x lí ngôn ng 186
5.1.4 Môi tr ng l p trình 187
5.2 Ki m th 189
5.2.1 T ng quan v ki m th 189
5.2.2 Ki m th n v 190
5.2.3 Ki m th tích h p 190
5.2.4 Ki m th h th ng 195
5.2.5 Các ki m th khác 197
5.2.6 K ho ch và nhi m v ki m th 197
6 C p nh t v n hành và phát tri n h th ng 204
6.1 Thi t k ch ng trình 205
6.1.1 Thi t k ch ng trình h ng i t ng 205
Trang 4c bi u di n trong ngôn ng l p trình Trong tr ng h p ó, c u trúc d li u c s cdùng.
Trang 5Ki u li t kê c nh ngh a nh ki u d li u kê ra t t c các giá tr có th c a bi n Trong
tr ng h p ki u li t kê, có th k tên ki u s nguyên
Trang 6Hình 1-2-1 Hình nh v ki u con tr
u trúc d li u có ch a m t c u trúc d li u c s hay b t kì ki u d li u c xác nh nào
nh ph n t c a nó (d li u), c g i là ki u có c u trúc Ki u có c u trúc c phân lo ithành ki u m ng và ki u b n ghi
(1) Ki u m ng
ng c g i là b ng Ki u m ng là d li u có c u trúc có ch a d li u thu c cùng ki u vàkích c T ng d li u cá nhân c g i là m t ph n t m ng, ph n t b ng hay ph n t Cách
ng c mô t ho c cách d li u c b trí có thay i tu theo ngôn ng l p trình cdùng
• M ng m t chi u
ng m t chi u có c u trúc d li u mà d li u c s p thành m ng theo m t hàng xác
nh m t ph n t trong m ng này, tr c h t a vào d u ngo c tròn m ( hay d u ngo cvuông [ sau tên c a m ng, r i a vào ch s và d u ngo c tròn óng ) hay d u ngo c vuôngóng ] Ch s ch ra s th t tính t nh c a m ng, n i ph n t xác nh ó c nh v
ng "A" có s ph n t c kí hi u là "i" c bi u di n là A (i)
t c u trúc d li u trong ó d li u c s p hàng theo c hai chi u ngang và ng c
i là m ng hai chi u D li u theo chi u ng c g i là c t và d li u theo chi u ngang
c g i là hàng xác nh ph n t nào ó trong m ng này, hai ch s tr nên c n thi t:
t ch s th t theo chi u ng (trên hàng nào) n i ph n t xác nh ó c nh v và
ch s kia ch ra s th t nào theo chi u ngang (trong c t nào) mà nó c nh v Ch ng
n, m ng "A" c nh v hàng "i" và c t "j" có th c di n t là A (i, j)
a ch c a bi n "b" li u
Bi n ki u con tr Bi n "b"
Trang 7Hình 1-2-3 M ng hai chi u (v i ba hàng và hai c t)
t 1 Hàng 1 A(1, 1) A(1, 2)
A(2, 1) A(2, 2) A(3, 1) A(3, 2)
Khi m ng hai chi u c l u gi trong n v b nh chính, nó l y d ng c a m ng m t chi u
ng hai chi u c v trong Hình 1-2-3 l y d ng c a m ng m t chi u có sáu ph n t Nh
c v trong Hình 1-2-4, d li u c l u gi theo ki u tu n t ho c theo chi u c a hàng
ho c theo chi u c a c t Chi u theo ó d li u c l u gi thay i tùy theo trình biên d ch
a ngôn ng l p trình c dùng Nói chung, d li u c l u gi theo chi u ng khiFortran c dùng và theo chi u ngang khi COBOL c dùng
Hình 1-2-4 Cách d li u c a m ng hai chi u c l u gi trong n v b nh chính
A(1,1) A(1,2)
A(2,1) A(2,2)
A(3,1) A(3,2)
ƒ M ng ba chi u
ng ba chi u có c u trúc d li u nhi u h n m ng hai chi u Nó có c u trúc ba chi u ch a các
t ph ng, các hàng và c t c ng nh các ph n t B ng vi c xây d ng m ng ba chi u trong
ng hai chi u, có th x lí m ng ba chi u theo cùng cách nh m ng hai chi u
Trang 8Hình 1-2-5 Xây d ng m ng ba chi u thành m ng hai chi u
ng nhi u chi u nh các m ng b n, n m hay nhi u chi u c ng có th c nh ngh a.Tuy nhiên, có th có nh ng gi i h n nào ó v s chi u, tùy theo ki u c a ngôn ng l p trìnhhay trình biên d ch
ng có th c phân lo i thành m ng t nh và m ng ng theo ph ng pháp c dùng
si t ch t m t mi n
- M ng t nh: M ng mà vùng c yêu c u do ch ng trình xác nh
- M ng ng: M ng mà vùng c yêu c u s c xác nh ra sau khi ch s c
dùng cho vi c t o m ng c cung c p qua m t bi u th c và bi u
n ghi (d li u v sinh viên)
Trang 9theo cùng cách nh m ng m t chi u, t ng d li u v n ph i c t tên nh n di n vì t ng
Trang 10(1) C u trúc danh sách và các ô
ng vi c dùng ch s cho t ng ph n t trong m ng, có th truy nh p nhanh chóng vào b t kì
ph n t nào T ng t nh v y, vi c thay i d li u có th c th c hi n d dàng N u b nchèn m t d li u vào âu ó trong m ng, b n ph i d ch chuy n toàn b t ng d li u sau ó lùi
i m t v trí N u b n xoá m t d li u trong m ng, t ng t , b n ph i d ch chuy n toàn b
ng d li u sau d li u b xoá ó nhích lên m t v trí
Hình 1-3-1 Chèn thêm m t ph n t m ng
Không gi ng nh c u trúc ki u m ng, c u trúc danh sách cho phép ph n t d li u c a cùng
ki u c s p hàng tu n t Ki m m ng òi h i r ng vi c b trí logic cho các ph n t là gi ng
t nh vi c b trí v t lí c a chúng trong b nh chính Trong tr ng h p c a c u trúc danhsách, vi c b trí logic không sánh h t nh vi c b trí v t lí
Danh sách ch a các ô và m i ô bao g m nh ng ph n t sau:
ch a a ch ô trong ph n con tr và ô này c móc n i sang ô kia qua con tr
Arai Ueki Endou Okada
Trang 11Hình 1-3-2 C u trúc danh sách
(2) Chèn d li u vào danh sách
chèn d li u vào danh sách, m i u b n c n làm là thay th các con tr t i d li u i
tr c và i sau d li u c chèn vào ó B i vì b n không ph i d ch chuy n các ph n t nh
tr ng h p d li u ki u m ng, nên b n có th chèn thêm d li u m t cách d dàng và nhanhchóng (Xem Hình 1-3-3.)
Trang 12a ch c a ô mà trong ó d li u ti p c l u gi B ng vi c l n theo nh ng a ch này
ng ô m t, b n có th th c hi n vi c duy t d li u
Hình 1-3-5 Danh sách m t chi u
Con tr th nh t c g i là g c hay u B i vì ph n con tr c a ô cu i không có b t kì a
ch nào trong ó d li u có th c l u gi , nên NULL (giá tr s là không) hay 0 cchèn thêm vào ph n này
‚ Danh sách hai chi u
Danh sách hai chi u có hai ph n con tr ( và ) ch a a ch các ô nh c v trongHình 1-3-6
Hình 1-3-6 Danh sách hai chi u
Ph n con tr và u c v trong Hình 1-3-6 ch a a ch c a ô k ti p và a ch c a ô
ng tr c t ng ng a ch c a ô cu i cùng c ch a trong con tr uôi Trong tr ng
p danh sách hai chi u, d li u có th c l n theo t ô u ho c uôi
ƒ Danh sách vòng
Danh sách hai chi u ch a NULL ô u tiên c g i là danh sách vòng Ph n con tr c a
ô th nh t này và ph n con tr ch a NULL c a ô cu i cùng ch a a ch ô khác, do v y d
li u có d ng cái vòng D li u có th c duy t theo cùng cách nh trong danh sách haichi u
Arai Inoue Wada u
trí uôi
trí u
Trang 13Hình 1-3-8 Trò ch i ném vòng
Trò ch i ném vòng c ch i b ng cách ném các vòng m u theo th t , l c, vàng và lam
a vào d li u) Chúng c l y ra t ng cái m t ( a ra d li u) theo th t o l i vi c némvào, t c là lam, vàng, l c và T c là vòng lam c ném vào cu i cùng s c l y ra utiên
Ki u c u trúc d li u này mà có th c so sánh v i trò ch i ném vòng c g i là ng n x p
th ng này còn có thu t ng là h th ng vào-sau-ra-tr c (LIFO) Vi c l u tr d li u trong
ng n x p c g i là " n vào (PUSH)" và vi c l y d li u ra t ng n x p c g i là "b t ra(POP)." Bi n u khi n vi c n vào và b t ra c g i là con tr ng n x p
n d li u vào ng n x p, t con tr ng n x p "sp" là +1 và l u gi d li u trong ph n t
ng c vi t là "sp." làm b t ra d li u t ng n x p, hãy l y d li u ã c l u gitrong m ng c ch b i "sp" và t con tr ng n x p là sp-1
Hình 1-3-9 C u trúc ng n x p
Hàng i là c u trúc d li u d a trên m ng m t chi u D li u c l u gi u tiên c c
ra u tiên Nó c so sánh v i hàng ng i ang i tr c máy tr ti n c a ngân hàng
sp - 1 sp + 1
Trang 14Qu n lý bán hàng
Qu n lý b ph n bán hàng th 2
c
A là cha nút C Nút D và E là con nút C.
Trang 15(1) Cây nh phân
u s nhánh ch ra t m t nút là "n" hay ít h n, t c là n u s con là 0 cho t i "n", m t c utrúc cây nh v y c g i là cây N ngôi Cây N-ngôi có 2 nhánh (n=2), t c là cây N ngôikhông có con, có m t hay hai con, c g i là cây nh phân, th ng là c u trúc d li u th ngdùng nh t M t khác, c u trúc cây có ba hay nhi u nhánh (n>2) c g i là cây nhi u nhánh.Cây nh phân bao g m m t ph n d li u và hai ph n con tr Con tr trái ch ra v trí c a nútkéo dài sang bên trái và các nhánh ch ra trong khi ph n con tr ph i ch ra v trí c a nút kéodài sang bên ph i và các nhánh ch ra
Hình 1-3-14 C u trúc cây nh phân
Cây nh phân có c u trúc phân c p cha m - con, nh c v trong Hình 1-3-15
Hình 1-3-15 C u trúc cây nh phân c s
<Cách th c hi n vi c duy t d li u cây nh phân>
duy t d li u c bi t trong d li u cây nh phân, ph i l n theo t ng nút m t Có ba
ph ng pháp th c hi n duy t d li u cây nh phân Vì khó gi i thích b ng l i nên hãy ki m l iHình 1-3-16 và xem cách d li u c duy t b ng vi c dùng t ng ph ng pháp
Hình 1-3-16 Cách th c hi n duy t d li u cây nh phân
- Th t g c tr c (Pre-order): V i g c là m b t u, nút bên trái c a m i nút cduy t qua theo cách tu n t
- Th t g c gi a (Mid-order): V i lá t i áy bên trái làm m b t u, r i duy t qua nútcha nó và ti p ó duy t qua ph n còn l i c a nút ó theo cách tu n t
- Th t g c sau (Post order): V i lá t i áy bên trái làm m b t u, ph n bên ph i m inút c duy t qua theo cách tu n t r i m i n nút cha c a nó
(2) Cây nh phân hoàn ch nh
u cây nh phân c xây d ng theo cách s các nhánh t g c t i t ng lá d c theo m tnhánh là b ng ho c sai khác m t so v i s các nhánh t g c t i t ng lá d c theo nhánh khác(ho c n u chi u cao t g c t i t ng lá là b ng hay sai khác m t v i chi u cao t g c t i t ng
lá thu c vào nhánh khác), thì cây ó c g i là cây nh phân hoàn ch nh Hình 1-3-17 v racây nh phân hoàn ch nh có m i nút
Cha Con Con
Trang 16Hình 1-3-17 Cây nh phân hoàn ch nh
(3) Cây tìm ki m nh phân
Cây tìm ki m nh phân c dùng nh m t bi n th c a cây nh phân Trong tr ng h p c acây tìm ki m nh phân, con cháu bên trái là nh h n cha m và con cháu bên ph i là l n h ncha m
Thu t toán cây tìm ki m nh phân là nh sau:
1 G c là m vi c tìm ki m b t u
2 D li u cây nh phân c so sánh v i d li u c n tìm
3 N u d li u cây nh phân = d li u c n tìm, vi c tìm là thành công ( c hoàn t t)
4 N u d li u cây nh phân > d li u c n tìm, thì các nút bên trái c a cây nh phân c tìm
và so sánh
5 N u d li u cây nh phân < d li u c n tìm, thì các nút bên ph i c a cây nh phân ctìm và so sánh
6 N u không tìm th y con nào, vi c tìm ki m là không thành công (không tìm th y d li u)
Hình 1-3-18 Th c hi n vi c tìm ki m v d li u trong cây tìm ki m nh phân
i vì nh ng c tr ng trên có th làm t ng b nh và tính hi u qu tính toán, nên tên
"B-cây" ngh a là cây cân b ng t t
3) 10=10
Trang 17a c tr ng c a B-cây
- t ng vi c s d ng vùng b nh , s con tr mà m i nút có c t là m/2 ho cnhi u h n và là m ho c ít h n S con tr theo m t ng tuy v y c t là 2 ho cnhi u h n
- M i lúc d li u b xoá hay c b sung thêm, vi c ch ra và ghép l i c th c hi n
ng cho s các ph n t c a m t nút có th tr thành m/2 hay nhi u h n ho c mhay ít h n u này cho phép lá bao gi c ng c duy trì trên cùng m c
Cây nh phân hoàn ch nh có m i quan h kích c nào ó gi a nút cha m và nút con c
i là ng (heap) ng khác v i cây nh phân ch ng không có m i quan h kích
th c nào ó gi a các anh em
1 2
3 9
1 2 5 6 7 8 10 11 12
Trang 18Hình 1-3-22 Ví d v ng
i vì ng có c u trúc c a cây nh phân hoàn ch nh, nên nó là m t lo i cây cân b ng, t
ch c c Trong tr ng h p c a ng, giá tr t i a (hay giá tr t i thi u) c a t t c các d
li u c ghi l i trong g c B ng vi c dùng c tr ng này, d li u có th c s p x p b ng
vi c l y ra d li u t i g c theo cách tu n t
Hình 1-3-23 S p x p d li u dùng ng
9
8 7
4 1
9
8 7
4 1
ng ây không ph i là ng
i quan h v kích c trong hình ch nh t ch m
1
4 3
Trang 19Khoá th ng c bi u di n theo s h th p phân, Khoá này c chuy n thành c s khác
i th p phân (ch ng h n c s ba), và k t qu c dùng làm a ch (ch s ) c a khoá
Khi m t khoá c chuy n thành a ch b ng vi c dùng hàm b m, các khoá khác nhau có th
c chuy n vào cùng m t a ch u này c g i là ng ngh a (hay ng ) (xem Hình1-3-24) M t b n ghi có th dùng a ch ã chuy n i c g i là b n ghi nhà còn b n ghikhông th dùng c nó s c g i là b n ghi ng ngh a
Trang 20‚ Ph ng pháp dây chuy n
i vi c dùng ph ng pháp dây chuy n, m t vùng b nh tách bi t c thi t l p và các
n ghi ng ngh a c l u gi trong vùng này Trong tr ng h p này, c n cung c p m tcon tr ch ra a ch n i các b n ghi ng ngh a c c t gi
n ghi có th c s
ng v i khóa 234 (B n ghi nhà)
Trang 21Bài t p
nh liên t c theo hàng, a ch n i l u gi [5, 6] là gì? Trong câu h i này, a ch
c bi u di n theo s th p phân.
a Con tr cho Shizuoka c t là 50 và con tr cho Hamamatsu c t là 150
b Con tr cho Shizuoka c t là 70 và con tr cho Atami c t là 150
c Con tr cho Shizuoka c t là 90 và con tr cho Hamamatsu c t là 150
d Con tr cho Shizuoka c t là 150 và con tr cho Atami c t là 90
a Cây nh phân b Hàng i c Ng n x p d ng
PUSH n: D li u (nguyên "n") c y vào ng n x p
a ch 100 101 102 103
a [1, 1]
a [1, 1]
Trang 22Q5 Hình 2 là bi u di n m ng cho cây nh phân c v trong Hình 1 Giá tr nào nên
Hình 2
Bi u di n m ng cho cây nh phân
i là cây nh phân Cây nh phân bao g m m t nút, m t cây trái và m t cây ph i.
(1) Th t g c tr c: Vi c tìm ki m c th c hi n theo th t c a nút, cây trái r i n cây
ph i
(2) Th t g c gi a: Vi c tìm ki m c th c hi n theo th t c a cây trái, nút và cây ph i.(3) Th t g c sau: Vi c tìm ki m c th c hi n theo th t cây trái, cây ph i và nút
u vi c tìm ki m c th c hi n b ng vi c dùng ph ng pháp th t g c sau, thì k t qunào trong các k t qu sau có th là cái ra xem nh giá tr c a nút?
a abchidefjgk b abechidfjgk c hcibdajfegk d hicdbjfkgea
150 190
130
Trang 23Q8 Cây nh phân c v d i ây có th c bi u di n b ng vi c dùng bi u th c s
a Chia ra và g p l i các nút cho phép chi u sâu phân c p tr thành nh nhau
b Nh n di n v trí n i d li u c l u gi b ng vi c dùng m t hàm nào ó và giá tr khoá
c Ch có th truy nh p tu n t t i d li u u và d li u ti p ó
d Có danh m c và m t thành viên Thành viên là t p c t ch c tu n t
Q11 M t s có n m ch s (a 1 a 2 a 3 a 4 a 5 ) ph i c l u gi trong m t m ng b ng vi c
0 1 2
11 12
9
28 19
C
Trang 252 Thu t toán
c ích c a ch ngCác c s c a vi c l p trình là thi t k thu t toán.Trong thi t k c u trúc logic c a ch ng trình, uquan tr ng là dùng thu t toán thích h p nh t T ng t
nh v y, trong vi c ch n ch ng trình t th vi n,thu t toán nào c dùng là m t trong nh ng tiêuchu n quan tr ng nh t ch n ch ng trình thích h p
nh t
Ch ng này mô t cho các c s c a thi t k thu t toán
và các thu t toán tiêu bi u
• Hi u các c s c a thu t toán, nh nh ngh a thu ttoán, thi t k , m i quan h v i c u trúc d li u,
ph ng pháp bi u di n v.v
‚ Hi u c tr ng và ý ngh a c a các thu t toán tìm
ki m, s p x p, x lí kí t và x lí t p tiêu bi u
Trang 26Gi i thi u
Vi c dùng thu t toán hi u qu , d hi u làm cho ng i ta có kh n ng t ng t c th c hi n và
gi m s l i còn b gi u kín Thu t toán là m t trong nh ng nhân t m u ch t xác nh ra hi u
ng h th ng C ng v y, ch t l ng c a thu t toán c dùng làm tiêu chu n cho vi c ch ncác b ph n t th vi n
Ch ng này mô t các c s c a thu t toán c dùng cho thi t k logic mô un và nh ngthu t toán c dùng gi i các bài toán n hình Vi c ch n m t thu t toán n i ti ng hay
th ng c dùng mà không phân tích y các v n c nêu ra là u c n tránh Nên
ch n l y m t thu t toán thích h p nh t cho các c tr ng c a bài toán
Vi c ánh giá b n thân thu t toán c ng là m t nhi m v quan tr ng D li u thu c b ng
vi c so sánh nhi u thu t toán trên c s con s khách quan s giúp ích r t nhi u cho b n trong
Trang 27c tr ng
- Ch ng trình c chia thành các mô un làm cho ch ng trình ph c t p, l n thành
hi u Vi c vi t mã c th c hi n cho t ng mô un
- Các nh lí có c u trúc c a vào l p trình (s c gi i thích v sau)
- Tính n ng có c u trúc c dùng d ch ch ng trình
i vì l p trình th t c là h ng ( u khi n) th t c, nên có nh ng h n ch sau:
- Bên c nh th t c ( u khi n), các bi n (tên bi n, ki u, kích c v.v ) ph i c khaibáo
- Các l nh c th c hi n t ng l nh m t theo cách tu n t (x lí song song không th
- M c gi ng v i x lí song song là cao
- Ti n trình tính toán hay th t c không c n c xét t i
Trang 282.1.2 Thu t toán và c u trúc d li u
Thu t toán và c u trúc d li u có quan h ch t ch v i nhau ch ng m c nào ó, c u trúc d
li u xác nh ra khuôn kh cho thu t toán
Vi c l u gi d li u ngh a là l u gi d li u vào b nh chính Trong l u gi d li u vào b
nh chính, ki u d li u (ki u d li u, kích c , v.v ) ph i c khai báo n v c u trúc d
li u c s nh t th ng c dùng khai báo ki u d li u c g i là c u trúc d li u c s Trong vi c th c hi n b c khai báo ki u d li u này, d li u c thao tác b ng vi c dùngtên c a d li u có ki u d li u ã c khai báo tr c (Xem Hình 2-1-1.)
Trang 29IF T-HIZUKE < R-HIZUKE THEN WRITE N-REC FROM T-REC
PERFORM T-YOMIKOMI ELSE WRITE N-REC FROM R-REC
PERFORM R-YOMIKOMI END-IF
COMPUTE N-COUNT = N-COUNT + 1 END-PERFORM.
DISPLAY T-COUNT R-COUNT N-COUNT.
CLOSE TOUGETU-FILE RUISEKI-FILE N-RUISEKI-FILE.
R-YOMIKOMI.
READ RUISEKI-FILE
AT END MOVE HIGH-VALUE TO R-HIZUKE NOT AT END COMPUTE R-COUNT = R-COUNT + 1 END-READ
Trang 30(2) Quan h gi a thu t toán và c u trúc d li u
i quan h gi a thu t toán và c u trúc d li u có th c mô t nh sau:
• X lí m ng
y thu t toán duy t tuy n tính (chi ti t c gi i thích trong M c 2.2.1) c v trongHình 2-1-2 làm ví d
Hình 2-1-2 Thu t toán duy t tuy n tính và c u trúc d li u
Duy t tuy n tính th ng c s d ng nhi u nh t duy t d li u Trong khi th c hi nduy t tuy n tính trên d li u, d li u c duy t trong khi ch s trong m ng c t ng lên
t i a l n duy t c l p l i là kích c c a m ng T c là, n u c u trúc d li u m ng cdùng, thì th t c và s l n l p l i là c xác nh
‚ X lí t p
y thu t toán c và in t p nh c nêu trong Hình 2-1-3 làm ví d (Chi ti t c gi ithích trong m c 2.2.5.)
Vi c x lí c, so n th o và in m t t p c l p l i cho t i khi không còn d li u trong t p
Vì t p ph i c truy nh p trong t ng chu trình x lí nên nhi m v này c th c hi n d i
TBL (i) : X
1 → tìm th y i+1 → i
TBL (i) : X
Tìm ki m thành công Tìm ki m không
X 25 S l n l p l i
l n nh t = N
Trang 31Hình 2-1-3 Thu t toán x lí t p và c u trúc d li u
ƒ X lí danh sách
Trong x lí c u trúc m ng, d li u có th c duy t và c p nh t m t cách tr n tru nh ng l i
t th i gian chèn thêm hay xoá d li u B i vì d li u c thu x p trong hàng i, nên
vi c chèn thêm hay xoá d li u không tránh kh i i kèm v i vi c d ch chuy n d li u ra sauhay lên tr c
Hình 2-1-4 Chèn thêm d li u vào trong m ng
Dùng c u trúc danh sách, vi c chèn thêm hay xoá d li u là d dàng M c d u d li u cthu x p theo cách có tr t t trong c u trúc danh sách, nó c thu x p m t cách logic chokhông c n ph i c thu x p v m t v t lí theo th t tu n t
Hình 2-1-5 C u trúc danh sách
Trong tr ng h p c a c u trúc danh sách, d li u không nh t thi t ph i b d ch chuy n nh
c v trong Hình 2-1-6; d li u có th c chèn thêm hay xoá i b i vi c thao tác con tr
Trang 322.2 Các thu t toán
Thu t toán nên c xem nh gi i quy t t ng bài toán c bi t N u thu t toán có th gi iquy t các bài toán t ng t ã c thi t k và ã có s n, thì vi c dùng thu t toán nh v y s
o kh n ng cho b n t o ra thu t toán t t h n theo cách hi u qu
c này mô t v các thu t toán tiêu bi u ã c phát tri n cho t i nay trong quan h v i
ng ki u bài toán
Vi c duy t b ng là ph ng pháp th c hi n vi c duy t trên b ng và t p c l u gi trong b
nh tìm ra các y u t áp ng cho các yêu c u xác nh
c này mô t cho hai ph ng pháp duy t b ng: ph ng pháp duy t tuy n tính (hay tu n t )
và ph ng pháp duy t nh phân
(1) Ph ng pháp duy t tuy n tính (hay tu n t )
Ph ng pháp duy t tuy n tính (hay tu n t ) là ph ng pháp duy t r t n gi n t u b ngtheo cách tu n t
Th t c duy t ch m d t khi vi c sánh thành công u tiên xu t hi n Do ó, ph ng phápduy t này là không thích h p cho vi c m s d li u sánh úng v i d li u c n tìm
‚ Ph ng pháp duy t lính canh
Ph ng pháp duy t lính canh dùng thu t toán mà trong ó cùng d li u (lính canh) nh d
li u c n tìm c t vào cu i c a b ng làm n gi n hoá thu t toán duy t và làm
Trang 33Hình 2-2-2 Ph ng pháp duy t lính canh
u s d li u c ch a trong b ng là N, thì c ng d li u ó (lính canh) nh d li u c ntìm c l u gi vào v trí (N + 1) sao cho d li u c n tìm có th c i sánh ngay l p t c
Trong vòng th nh t c a vi c i chi u d li u, d li u c n tìm c xác th c Trong vòng
th hai, ph i xác nh li u có d li u sánh úng v i d li u c n tìm hay không T c là, n u
d li u là N, vi c so sánh c th c hi n ch (N + 1) l n
<Tr ng h p ph ng pháp duy t lính canh không c dùng>
Trong m t vòng i chi u d li u, tính xác th c c a d li u c n tìm c ng nh li u vi c tìm
ki m có k t thúc hay không ph i c xác nh T c là, vi c so sánh c th c hi n (N× 2)n
Ch có 1 phép
so sánh trong
quá trình tìm
ki m
Trang 34(2) Ph ng pháp duy t nh phân
Ph ng pháp duy t nh phân là ph ng pháp làm h p d n d li u ích khi phân chia liên ti p
mi n duy t thành hai ph n S các phép so sánh có th c gi m i r t nhi u n u so v i
ph ng pháp duy t tuy n tính và tính hi u qu duy t có th c nâng cao Tuy nhiên ph ngpháp duy t này òi h i r ng các ph n t ph i c s p theo th t t ng hay gi m
Hình 2-2-4 ch ra thu t toán c dùng cho ph ng pháp duy t nh phân
Hình 2-2-4 Thu t toán cho ph ng pháp duy t nh phân
Vì các ph n t c x p theo th t t ng hay gi m, nên d li u nh h n d li u tham chi ukhông c n ph i c duy t n u d li u ang c duy t l n h n d li u tham chi u Do ó, s
li u c n duy t có th c gi m i m t n a sau l n duy t th nh t - m t u th l n v hi u
1866 2132 TBL(9) TBL(10)
Trang 35Tìm th y : 1
X : TBL ( i )
X : TBL ( i )
Tìm ki m không thành công
Tìm ki m thành công
c làm tròn thành a trong s nguyên
Trang 362.2.2 Thu t toán s p x p
Vi c s p x p d li u là vi c t ch c l i d li u theo m t th t c bi t Vi c s p x p theo th giá tr t nh t i l n c g i là s p x p theo th t t ng, còn vi c s p d li u theo chi u
(1) Ph ng pháp tráo i c s (s p x p n i b t - bubble sort)
Ph ng pháp tráo i c s (s p x p n i b t) c dùng so sánh m t c p d li u tu n t t
u m ng N u tr t t mà sai, thì d li u c tráo i Khi t t c các kho n m c d li u trong
t m ng c so sánh, thì trình này cho l i u m ng và nó c l p l i cho t i khi khôngcòn kho n m c d li u nào c n tráo i n a Ph ng pháp này là ph ng pháp s p x p n
gi n nh t, n i ti ng nh t Cái tên "s p x p n i b t" c cho b i vì vi c chuy n t i a hay t ithi u d li u gi ng nh b t n i lên b m t n c
Trang 38N - 1 → N
i + 1 → i SAVE → TBL (i+1)
Trang 39(2) Ph ng pháp l a c s (basic selection sort)
Trong thu t toán s p x p c a ph ng pháp l a c s , m t kho n m c d li u v i giá tr nh
nh t (hay l n nh t) c ch n ra u tiên t t t c các kho n m c d li u và nó c tráo i
i kho n m c d li u u m ng, r i cùng vi c này c th c hi n l p l i trên t t c cáckho n m c d li u còn l i Khi d li u úng a vào v trí cu i cùng là m t, thì vi c s p x p
i ch Tìm ph n t d li u có giá tr nh nh t
i ch Tìm ph n t d li u có giá tr nh nh t
Trang 40j → MIN
SAVE → TBL (MIN)
TBL ( MIN ) : TBL ( j )