www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Nhập Môn Lập Trình
Mảng – Mảng Một Chiều
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Road Map
Khái Niệm Mảng
Mảng một chiều
Khởi tạo mảng 1 chiều
Duyệt mảng 1 chiều
Nhập/ Xuất mảng 1 chiều
Sắp Xếp Mảng
Bubble sort
Cấp Phát Vùng Nhớ Động
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
3
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
5
7 4 10 15 90 30 3 21 56 80
Mảng B
Phần tử B[3] có giá trị là 15
0 1 2 3 4 5 6 7 8 9
chỉ số
Mảng Một Chiều
Ví dụ: int B[10];
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
6
Khởi tạo = khai báo + gán giá trị cho mảng
Cú pháp khởi tạo mảng
#include<stdio.h>
#include<conio.h>
#define SIZE 5
void main()
{ clrscr();
int a[SIZE]={4,6,3,8,9};
for(int i=0; i<SIZE; i++)
printf("\na[%d]=%d",i,
a[i]);
int n[10]; n[0]++; /* quên gán giá trị trước khi dùng */
int b[5] = { 1, 3, 5, 7, 9, 11 }; /* gán nhiều giá trị hơn số phần tử */
int n[10] = { 0 };
/* gán giá trị zero cho phần từ đầu tiên và */
/* đồng thời gán giá trị zero cho tất cả phần tử còn lại vì số giá
trị dùng để gán ít hơn số phần tử của mảng */
int n[] = { 1, 3, 5, 7, 9 } /* Khởi tạo mảng có 5 phần tử số nguyên */
Mảng Một Chiều
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
9
Xử lý mảng = Xử lý nhóm các phần tử = Xử lý mỗi phần tử trong mảng.
Một phần tử được xác định bởi một chỉ số
for (i=0; i<n; i++) xử lý a[i];
for (i=0; i<n; i++)
if (Điều kiện) xử lý a[i];
Duyệt mảng ngược
for (i=n-1; i>=0; i ) xử lý a[i];
for (i=n-1; i>=0; i )
if (điều kiện) xử lý a[i];
Duyệt mảng xuôi
18
12
Minh họa duyệt mảng 1 chiều
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
11
#include <conio.h>
#include <stdio.h>
void main()
{ int a[100],n;
clrscr();
//Nhập các phần tử vào mảng
printf("\n nhap so phan tu cua mang:");
scanf("%d",&n);
for (int i=0;i<n;i++)
{ printf("nhap a[%d]: ",i);
scanf("%d",&a[i]);
}
//Xuất mảng ra màn hình
printf("Noi dung mang:");
for(int i=0;i<n; i++)
printf("%3d",a[i]);
getch();
}
Kết quả
Viết chương nhập n
phần tử kiểu số nguyên vào
mảng và xuất mảng
Ý tưởng chính:
Mảng có N phần tử
Tìm số nhỏ nhất trong N phần tử và đưa về vị trí đầu tiên
Tìm số nhỏ nhất trong N-1 phần tử và đưa về vị trí kế tiếp
Tiếp tục lặp lại đến hết phần tử trong mảng
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
14
Bubble Sort – Ví dụ
2 8 5 1 6 4
1
5
1
2
2 3 4 5 6 7 81
i
j
1
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
15
Bubble Sort – Ví dụ
1
2 4
1
2
8 5 6
1
5
1
2 3 4 5 6 7 81
i
j
5
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
18
Bubble Sort – Ví dụ
2 4 5
1
2
8 6
1
5
1
2 3 4 5 6 7 81
i
j
6
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
2
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
21
Bubble sort – Thuật toán
Mảng
bắt đầu
1
12
2
2
3
8
4
5
5
1
6
6
7
4
8
15
Sau 1
vòng
1
12
2
8
12
6
8
15
Sau 5
vòng
1
2
4
5
6
12
8
15
Sau 6
vòng
1
2
4
5
6
8
12
15
Mảng xếp
theo thứ tự
1
2
4
5
www.hoasen.edu.vn
24
Demo sắp xếp
mảng tăng dần
bằng thuật toán
Bubble Sort
Sắp xếp mảng 1 chiều
#include <stdio.h>
#include <conio.h>
void main()
{ int n=5;
int a[n] = {5,3,4,7,1};
int i,j, t ;
for (i=0; i<n-1; i++)
for (j=n-1; j> i ; j )
if (a[j] < a[j-1])
{ t = a[j];
a[j]= a[j-1];
a[j-1] = t;
}
//Xuất mảng đã sắp xếp tăng
for (i=0; i<n; i++)
printf(“%3d”,a[i]);
getch();
}
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
www.hoasen.edu.vn
25