1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng nhập môn lập trình mảng dữ liệu trần phước tuấn

15 206 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 430,68 KB

Nội dung

NMLT M NG D LI U Tr n Ph c Tu n tranphuoctuan.khoatoan.dhsp@gmail.com http://baigiang.tranphuoctuan.com M ng – Array M t s tính ch t Khai bá báo m ng C Truy xu t cá thành ph n Truy n tham s ki u m ng cho hàm M t s thao tác c s M ng nhi u chi u NH P MÔN L P TRÌNH 12/23/2009 M ng – M t s tính ch t M ng là m t ki u d li u có có c u trú trúc ng i l p trình nh ngh a Dùng bi u di n i t ng d li u d ng m t dãy thành ph n có ki u v i – ki u c s NNLT C ch nh m t kh i nh liên t c cho m t bi n ki u m ng Kích th c c a m ng c xác nh khai báo không bao gi thay i NH P MÔN L P TRÌNH 12/23/2009 M ng – Khai báo C typedef ki uc s Tênki u[S thànhph n]; ki u c a m i thành ph n h ng s , s thành ph n t i a c a m ng l p trì trình viên typedef int t tên AINT[100]; //AINT ki u m ng bi u di n dãy g m 100 thành ph n int AINT NH P MÔN L P TRÌNH a; //a: bi n ki u AINT 12/23/2009 M ng – Ví d #define #define SIZE SIZE int int a[5]; a[5]; 10 10 // // aa dãy dãy gg mm 55 ss nguyên nguyên long long int int big[100]; big[100];// // big: big: chi chi mm 400 400 bytes! bytes! double double d[100]; d[100]; long long double double // // d: d: chi chi mm 800 800 bytes! bytes! v[SIZE];// v[SIZE];// v:10 v:10 long long doubles doubles NH P MÔN L P TRÌNH M ng – Ví d int int double double short short long long a[5] a[5] d[100] d[100] primes[] primes[] b[50] b[50] kh i tr cho thành ph n == {{ 10, 10, 20, 20, 30, 30, == {{ 1.5, 2.7}; 1.5, 2.7}; == {{ 1, 1, 2, 2, 3, 3, 5, 5, == {{ 00 }; }; compiler xác nh kích th c g m thành ph n int ii == 7; int 7; const int c = 5; const int c = 5; int a[i]; int a[i]; double d[c]; double d[c]; short primes[]; short primes[]; NH P MÔN L P TRÌNH 12/23/2009 40, 40, 50}; 50}; 7, 7, 11, 11, 13}; 13}; cách nhanh nh t kh i tr t c thành ph n b ng 12/23/2009 thành ph n u tiên c kh i tr , ph n l i: M ng – Truy xu t ph n t Các thành ph n c a m ng c truy xu t thông qua ch s c a chúng size-1 Thao tác truy xu t không ki m tra gi i h n c a ch s int int main() main() {{ int int a[6]; a[6]; int i int i == 7; 7; a[0] = 59; a[0] = 59; a[5] a[5] == -10; -10; a[i/2] = a[i/2] = 2; 2; a[6] = 0; a[6] = 0; a[-1] a[-1] == 5; 5; return 0; return 0; }} NH P MÔN L P TRÌNH a 12/23/2009 Truy n tham s M ng cho hàm Tham s ki u m ng c truy n cho hàm a ch c a ph n t u tiên m ng S thành ph n tham s m ng có th tr ng S thành ph n th c s c s d ng ph i truy n qua m t tham s khác (vd: size) int int add_elements(int add_elements(int a[], a[], int int size) size) {{ int int add_elements(int add_elements(int *p, *p, int int size) size) {{ NH P MÔN L P TRÌNH 12/23/2009 Ví d primes #include #include void sum(long void sum(long [], [], int); int); int main(void) { int main(void) { long long primes[6] primes[6] == {{ 1, 1, 2, 2, 3, 5, 7, 11 }; 3, 5, 7, 11 }; sum(primes, sum(primes, 6); 6); printf("%li\n", printf("%li\n", primes[0]); primes[0]); return 0; return 0; }} 11 a sz void voidsum(long sum(long a[], a[], int int sz) sz) {{ int int i; i; long long total total == 0; 0; for(i = 0; i < for(i = 0; i < sz; sz; i++) i++) total += a[i]; total += a[i]; a[0] = a[0] = total; total; }} NH P MÔN L P TRÌNH dùng ki m tra gi i h n ch ng c l u vào ph n t u tiên 12/23/2009 M t s thao tác c s Nh p Xu t Thêm m t thành ph n d li u Lo i b m t thành ph n d li u Tìm ki m S px p NH P MÔN L P TRÌNH 12/23/2009 10 M ng – Nh p d li u void void ReadData(int ReadData(int a[], a[], int int size) size) {{ t qua t t c int i; int i; ph n t for(i for(i == 0; 0; ii 0)&&(a[pos(pos>0)&&(a[pos-1]>X); pos ) ) a[pos] a[pos] == a[pos a[pos –– 1]; 1]; a[pos] = X; a[pos] = X; NN ++; ++; }} NH P MÔN L P TRÌNH 12/23/2009 18 M ng – Lo i b m t thành ph n d li u Bài toán: lo i b thành ph n d li u X kh i m ng a ang có N thành ph n ng gi i quy t: xác nh v trí c a X, n u tìm th y d n ph n t phía sau lên l p vào ch tr ng tr ng h p: Dãy th t : l p ph n t cu i lên Dãy ã th t : d i t t c ph n t sau ví ví trí c a X lên tr c v trí NH P MÔN L P TRÌNH 19 12/23/2009 M ng – Lo i b X kh i dãy t ng Lo i kh i (a, 8) pos 12 15 STOP N=7 X Tìm v trí c a NH P MÔN L P TRÌNH Ok, found n v trí 4, 5, 6, lên 12/23/2009 20 M ng – Lo i b X kh i dãy t ng //input: //input: dãy dãy (a, (a, N), N), XX //output: //output: dãy dãy (a, (a, N) N) ãã lo lo ii bb 11 thành thành ph ph nn XX int Remove(int int Remove(int a[], a[], int int &N, &N, int int X) X) {{ int int pos pos == Search(a, Search(a, N, N, X); X); if (pos == 1) //không có ó XX c if (pos == -1) //không có dãy dãy return return 0; 0; NN ; ; -; for for (; (; (pos (pos [...]... – S p x p 1 2 j 3 1 2 12 8 i ch 4 5 6 7 8 5 2 6 4 15 i NH P MÔN L P TRÌNH 12/23/2009 24 M ng – S p x p 1 2 3 j 4 1 2 12 4 8 i ch 5 6 7 8 5 6 4 15 i NH P MÔN L P TRÌNH 25 12/23/2009 M ng – S p x p i ch 1 2 3 4 j 5 1 2 4 12 5 8 6 7 8 6 5 15 i NH P MÔN L P TRÌNH 12/23/2009 26 M ng – S p x p i ch 1 2 3 4 5 6 7 8 1 2 4 5 6 8 12 15 NH P MÔN L P TRÌNH M ng – S p x p 12/23/2009 27 i ch void void Swap(int Swap(int... a[pos + 1]; return return 1; 1; }} NH P MÔN L P TRÌNH 12/23/2009 21 M ng – S p x p Bài toá thu toán: S p x p cá các thà thành ph n c a (a, (a, N) c dãy t ng d n Gi i pháp: Tìm cách tri t tiêu t t c các ngh ch th c a dãy Thu t toán s p x p i ch tr c ti p NH P MÔN L P TRÌNH 12/23/2009 22 M ng – S p x p i ch 1 j 2 3 4 5 6 7 8 12 1 2 8 5 1 6 4 15 i NH P MÔN L P TRÌNH 23 12/23/2009 M ng – S p x p 1 2 j... = 238; rainfall[brighton][day_of_year] rainfall[brighton][day_of_year] == 0.0F; 0.0F; NH P MÔN L P TRÌNH Tóm l 12/23/2009 29 c Khai báo m ng trong C Truy xu t các ph n t Truy n tham s ki u m ng cho hà hàm Các thao tá tác: nh p, xu t, thêm/h y 1 thà thành ph n, tìm ki m, s p x p M ng nhi u chi u NH P MÔN L P TRÌNH 12/23/2009 30 ... N) N) {{ int int i, i, j; j; for for (i (i == 00 ;; i ... S p x p i ch j 12 15 i NH P MÔN L P TRÌNH 23 12/23/2009 M ng – S p x p j 12 i ch 15 i NH P MÔN L P TRÌNH 12/23/2009 24 M ng – S p x p j 12 i ch 15 i NH P MÔN L P TRÌNH 25 12/23/2009 M ng – S... Dãy ã có th t Tìm v trí thích h p, chèn X vào NH P MÔN L P TRÌNH 15 12/23/2009 M ng – Thêm X vào cu i dãy Thêm 15 vào (a, 7) 12 N=8 NH P MÔN L P TRÌNH a[N] a[N] == X; X; 15 X NN ++; ++; 12/23/2009... for -1 ]>X); pos ) (pos>0)&&(a[pos -for (pos (pos == N; N; (pos>0)&&(a[pos(pos>0)&&(a[pos-1]>X); pos ) ) a[pos] a[pos] == a[pos a[pos –– 1]; 1]; a[pos] = X; a[pos] = X; NN ++; ++; }} NH P MÔN

Ngày đăng: 03/01/2016, 10:25