8/19/2019 Lecture05 Mang
1/30
Mảng - ArrayMảng - Array
8/19/2019 Lecture05 Mang
2/30
Mảng – ArrayMảng – Array
Một số tính chấtMột số tính chất Khai báo mảng trong CKhai báo mảng trong C Truy xuất các thành phầnTruy xuất các thành phần Truyền tham số kiu mảng cho hàmTruyền tham số kiu mảng cho hàm Một số thao tác c! s" Một số thao tác c! s" Mảng nhiều chiềuMảng nhiều chiều
8/19/2019 Lecture05 Mang
3/30
Mảng –Mảng – Một số tính chấtMột số tính chất Mảng #à một kiu $% #i&u c' cấu tr(c $o ng)*i #+pMảng #à một kiu $% #i&u c' cấu tr(c $o ng)*i #+p
tr,nh -.nh ngh/atr,nh -.nh ngh/a 01ng biu $i2n các -ối t)3ng $% #i&u " $4ng một01ng biu $i2n các -ối t)3ng $% #i&u " $4ng một
$5y các thành phần c' c1ng kiu 67i nhau 8 kiu c!$5y các thành phần c' c1ng kiu 67i nhau 8 kiu c!s" s"
99:T C #u;n ch< -.nh một khối nh7 #i=n t>c cho 99:T C #u;n ch< -.nh một khối nh7 #i=n t>c chomột bi?n kiu mảngmột bi?n kiu mảng
Kích th)7c c@a mảng -)3c xác -.nh ngay khi khaiKích th)7c c@a mảng -)3c xác -.nh ngay khi khai báo 6à kh;ng bao gi* thay -Ai báo 6à kh;ng bao gi* thay -Ai
8/19/2019 Lecture05 Mang
4/30
Mảng –Mảng – Khai báo trong CKhai báo trong C kiểucơsởkiểucơsở TênBiếnTênBiến[[SốthànhphầnSốthànhphần]];;
kiểu của mỗi thành phầnkiểu của mỗi thành phần hằng số, số thành phầnhằng số, số thành phầntối đa của mảngtối đa của mảng
do lập trình viên đt têndo lập trình viên đt tên
intint a[a[100100];]; //a là mảng biểu diễn dãy gồm 100 thành phần int //a là mảng biểu diễn dãy gồm 100 thành phần int
8/19/2019 Lecture05 Mang
5/30
Mảng –Mảng – Bí $>Bí $>
#define S!" 10
int a[]; $$ a d%& '() số n'u&ên
*+n' int ,i'[100]; $$ ,i'- chiế) .00 ,&tes/
d+u,*e d[100]; $$ d- chiế) 00 ,&tes/
*+n' d+u,*e [S!"];$$ -10 *+n' d+u,*es
#define S!" 10
int a[]; $$ a d%& '() số n'u&ên
*+n' int ,i'[100]; $$ ,i'- chiế) .00 ,&tes/d+u,*e d[100]; $$ d- chiế) 00 ,&tes/
*+n' d+u,*e [S!"];$$ -10 *+n' d+u,*es
8/19/2019 Lecture05 Mang
6/30
Mảng –Mảng – Bí $>Bí $>
int a[] 2 3 104 504 604 .04 07;d+u,*e d[100] 2 3 184 5897;sh+:t p:i)es[] 2 3 14 54 64 4 94 114 167;*+n' ,[0] 2 3 0 7;
int a[] 2 3 104 504 604 .04 07;d+u,*e d[100] 2 3 184 5897;sh+:t p:i)es[] 2 3 14 54 64 4 94 114 167;*+n' ,[0] 2 3 0 7;
khởi tạo cho5 thành phần
2 thành phầnđầu tiên đượckhởi tạo, phần
còn lại: 0
Trình biên dịch !cđịnh k"ch thư#c
$%& ' thành phần c!ch nh(nh nh)t đ*khởi tạo t)t c+ c!cthành phần bn$ 0
8/19/2019 Lecture05 Mang
7/30
Các thành phần c@a mảng -)3c truy xuất th;ng ua ch< sốCác thành phần c@a mảng -)3c truy xuất th;ng ua ch< sốc@a ch(ng DEEnFGc@a ch(ng DEEnFG
Thao tác truy xuất kh;ng kim tra gi7i h4n c@a ch< sốThao tác truy xuất kh;ng kim tra gi7i h4n c@a ch< số
int )ain;a[] 2 ?10;a[i$5] 2 5;a[=] 2 0;a[?1] 2 ;:etu:n 0;
7
int )ain<3
int a[=];int i 2 9;a[0] 2 >;a[] 2 ?10;
a[i$5] 2 5;a[=] 2 0;a[?1] 2 ;:etu:n 0;
7
0(
-
2
.
/
5
Mảng –Mảng – Truy xuất các phần tHTruy xuất các phần tH
8/19/2019 Lecture05 Mang
8/30
Truyền tham số Mảng cho hàmTruyền tham số Mảng cho hàm
Tham số kiu mảng -)3c truyền cho hàm chính #à -.a chng phải truyền ua mộtIố thành phần thJc sJ -)3c sH $>ng phải truyền ua một
tham số khác 6$L siNOtham số khác 6$L siNO
int add@e*e)entsint a[]4 int siAe<
3
int add@e*e)entsint a[]4 int siAe<3
int add@e*e)entsint p4 int siAe<3
int add@e*e)entsint p4 int siAe<3
8/19/2019 Lecture05 Mang
9/30
Ví dụVí dụ#inc*ude Cstdi+8hD +id su)*+n' []4 int
8/19/2019 Lecture05 Mang
10/30
Một số thao tác cơ sở Một số thao tác cơ sở
9h+p 9h+p PuấtPuất Th=m một thành phần $% #i&uTh=m một thành phần $% #i&u :o4i bQ một thành phần $% #i&u:o4i bQ một thành phần $% #i&u T,m ki?mT,m ki?m IRp x?pIRp x?p
8/19/2019 Lecture05 Mang
11/30
Mảng –Mảng – 9h+p $% #i&u 9h+p $% #i&u
+id IeadJataint a[]4 int siAe<3
int i;
f+:i 2 0; i C siAe; iHH<3
p:intfKLhap thanh phan Fd- M4 i
8/19/2019 Lecture05 Mang
12/30
Mảng –Mảng – Puất $% #i&u ra màn h,nhPuất $% #i&u ra màn h,nh
+id O:iteJataint a[]4 int siAe<3
int i;
f+:i 2 0; i C siAe; iHH< p:intfKFd M4 a[i]
8/19/2019 Lecture05 Mang
13/30
Mảng –Mảng – 9h+p xuất $% #i&u 9h+p xuất $% #i&u
#inc*ude Cstdi+8hD +id IeadJataint []4 int
8/19/2019 Lecture05 Mang
14/30
Mảng –Mảng – T,m 6. trí P trong $5yT,m 6. trí P trong $5y
//input: dãy (a, N), X //output: Vị trí của X, -1 nếu không c
intint Sea:chint a[]4 int L4 int P
8/19/2019 Lecture05 Mang
15/30
MảngMảng 8 Th=m một thành phần $% #i&u 8 Th=m một thành phần $% #i&u Sài toánL cần th=m thành phần $% #i&u P 6ào mảng aSài toánL cần th=m thành phần $% #i&u P 6ào mảng a
-ang c' 9 thành phầnE-ang c' 9 thành phầnE Uai tr)*ng h3p cần xNm xVtLUai tr)*ng h3p cần xNm xVtL
05y ch)a c' thW tJ05y ch)a c' thW tJ Th=m P 6ào cuối aETh=m P 6ào cuối aE
05y -5 c' thW tJ05y -5 c' thW tJ
T,m 6. trí thích h3pX chYn P 6àoT,m 6. trí thích h3pX chYn P 6ào
8/19/2019 Lecture05 Mang
16/30
Mảng – Mảng – Th=m P 6ào cuối $5yTh=m P 6ào cuối $5y
2 8 5 1 6 4
15
12
1 2 3 4 5 6 70
Thê& -5 ào A(, 'B
C D 'C D Ea[L] 2 P; L HH;
a[L] 2 P;
L HH;F
8/19/2019 Lecture05 Mang
17/30
Mảng – Mảng – ChYn P 6ào $5y tZng $ầnChYn P 6ào $5y tZng $ần
2 4 5 812
15
6
1
1 2 3 4 5 6 70
GhHn 3 ào A(, 'B
C D 'C D E
F
Iị tr" th"ch hợp: /
pos
8/19/2019 Lecture05 Mang
18/30
Mảng –Mảng – ChYn P 6ào $5y tZng $ầnChYn P 6ào $5y tZng $ần
//input: dãy (a, N) t!ng d"n, X //output: dãy (a, N) #ã c X $ #%ng &ị trí
+id inse:tint )an'[]4 int L4 int P
8/19/2019 Lecture05 Mang
19/30
MảngMảng 8 :o4i bQ một thành phần $% #i&u 8 :o4i bQ một thành phần $% #i&u
Sài toánL #o4i bQ thành phần $% #i&u P ra khQiSài toánL #o4i bQ thành phần $% #i&u P ra khQimảng a -ang c' 9 thành phầnEmảng a -ang c' 9 thành phầnE
U)7ng giải uy?tL xác -.nh 6. trí c@a PX n?u t,mU)7ng giải uy?tL xác -.nh 6. trí c@a PX n?u t,m
thấy th, $[n các phần tH " phía sau #=n - #ấp 6àothấy th, $[n các phần tH " phía sau #=n - #ấp 6àoch\ trốngE ] tr)*ng h3pLch\ trốngE ] tr)*ng h3pL 05y kh;ng c' thW tJL #ấp phần tH cuối #=n05y kh;ng c' thW tJL #ấp phần tH cuối #=n 05y -5 thW tJL $*i tất cả các phần tH " sau 6í05y -5 thW tJL $*i tất cả các phần tH " sau 6í
trí c@a P #=n tr)7c G 6. tríEtrí c@a P #=n tr)7c G 6. tríE
8/19/2019 Lecture05 Mang
20/30
C D E
Mảng – Mảng – :o4i bQ P ra khQi $5y tZng:o4i bQ P ra khQi $5y tZng
2 8 5 1 6 4
15
12
1 2 3 4 5 6 70
Joại 5 khKi A(, EB
C D '
pos
Tì& ị tr" cL( 5
5F
STOP
Ok, found
M%n c!c ị tr" /, 5, 3, ' lên
8/19/2019 Lecture05 Mang
21/30
Mảng –Mảng – :o4i bQ P ra khQi $5y tZng:o4i bQ P ra khQi $5y tZng
//input: dãy (a, N), X //output: dãy (a, N) #ã 'oi * 1 th+nh ph"n X
intint Ie)+eint a[]4 int L4 int P
8/19/2019 Lecture05 Mang
22/30
Mảng –Mảng – IRp x?pIRp x?p
Sài toánL IRp x?p các thành phần c@a aX 9O - thuSài toánL IRp x?p các thành phần c@a aX 9O - thu-)3c $5y tZng $ần-)3c $5y tZng $ần
iải phápL T,m cách #o4i bQ tất cả các 6. trí sai trongiải phápL T,m cách #o4i bQ tất cả các 6. trí sai trong$5y$5y Thu+t toán sRp x?pThu+t toán sRp x?p ^Ai chA trJc ti?p^Ai chA trJc ti?p Thu+t toán nAi b_t F Subb#N sortThu+t toán nAi b_t F Subb#N sort Thu+t toán IN#Nction IortThu+t toán IN#Nction Iort
`̀
8/19/2019 Lecture05 Mang
23/30
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
2 8 5 1 6 4 15
12
2 3 4 5 6 7 81
i
1
8/19/2019 Lecture05 Mang
24/30
12
8 5 2 6 4 15
1
2 3 4 5 6 7 81
i
2
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
8/19/2019 Lecture05 Mang
25/30
2 12
8 5 6 4 15
1
2 3 4 5 6 7 81
i
4
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
8/19/2019 Lecture05 Mang
26/30
2 4 12
8 6 5 15
1
2 3 4 5 6 7 81
i
5
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
8/19/2019 Lecture05 Mang
27/30
2 4 5 6 8 12
15
1
2 3 4 5 6 7 81
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
8/19/2019 Lecture05 Mang
28/30
Mảng –Mảng – IRp x?p -Ai chAIRp x?p -Ai chA
+id SQapint R4 int &<3
int t 2 R; R 2 &; & 2 t;7
+id nte:chan'eS+:tint a[]4 int L<3
int i4 ;
f+: i 2 0 ; iCL?1 ; iHH
8/19/2019 Lecture05 Mang
29/30
Mảng nhiều chiềuMảng nhiều chiều C kh;ng h\ tr3 mảng nhiều chiềuE Tuy nhi=n c' th ti?pC kh;ng h\ tr3 mảng nhiều chiềuE Tuy nhi=n c' th ti?p
c+n thNo h)7ngL Mảng ] chiều #à mảng một chiều mà m\ic+n thNo h)7ngL Mảng ] chiều #à mảng một chiều mà m\ithành phần c@a n' #à một mảng một chiềuEthành phần c@a n' #à một mảng một chiềuE
f*+at :ainfa**[15][6=];f*+at :ainfa**[15][6=];
Nr(inO(llP là &+n$ $%& -2
thành phần, &Qi thành phần là&+n$ $%& .35 19 Olo(t
sh+:t eRa)@)a:ks[00][10];sh+:t eRa)@)a:ks[00][10];N(&R&(rk1P là &+n$ $%&500 thành phần, &Qi thànhphần là &+n$ -0 19 1hort
c+nst int ,:i'ht+n 2 9;int da&@+f@&ea: 2 56;
:ainfa**[,:i'ht+n][da&@+f@&ea:] 2 080;
c+nst int ,:i'ht+n 2 9;int da&@+f@&ea: 2 56;
:ainfa**[,:i'ht+n][da&@+f@&ea:] 2 080;
8/19/2019 Lecture05 Mang
30/30
Tổng kếtTổng kết
Khai báo mảng trong CKhai báo mảng trong C Truy xuất các phần tHTruy xuất các phần tH Truyền tham số kiu mảng cho hàmTruyền tham số kiu mảng cho hàm Các thao tácL nh+pX xuấtX th=mh@y G thành phầnXCác thao tácL nh+pX xuấtX th=mh@y G thành phầnX
t,m ki?mX sRp x?pt,m ki?mX sRp x?p Mảng nhiều chiềuMảng nhiều chiều
Top Related