Lecture05 Mang

download Lecture05 Mang

of 14

Transcript of Lecture05 Mang

  • 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