Xử Lý Mảng Trong C#:
– Tìm hiểu về mảng
– Các theo tác trên mảng
+ Là tập hợp nhiều phần tử có cùng kiểu dữ liệu
+ Số phần tử trong mảng được xác định trước
+ Mỗi phần tử được đánh số chỉ mục, bắt đầu từ 0 vd: có 6 phần từ là số nguyên thì mảng sẽ chạy từ 0 tới 5
Cách Khai Báo Mảng
KiểuDữLiệu [] tênMảng;
Ví dụ
int [] bangDiem;
string[] loiNoi;
DateTime[] ngaySinh;
– Cách khởi tạo mảng
tenMang = new KieuDuLieu[soPhanTu]
Ví dụ
diem = new int[9];
loiNoi = new string[10];
ngaySinh = new DateTime[5];
diemTB = new float[3];
– Khởi tạo và gán giá trị Mảng và truy xuất phần tử trong mảng
tenMang = new KieuDuLieu[spt]{gtri1, gtri2, gtri3,…};
diem = new int[5]{ 5, 6, 7, 6, 9 }
Giá trị không nhất thiết phải là hằng số
Số giá trị trong dấu ngoặc phải bằng số phần tử mảng được khai báo
Xác định số phần tử của mảng
tenMang.Length
Truy xuất phần tử: tenMang[soThuTu]
0 <= soThuTu <= (tenMang.Length – 1)
Ví dụ
Lấy điểm thứ 3 (soThuTu = 2) của mảng diem
int diem3 = diem[2];
diem3 = 7
– Cách gán giá trị cho từng phần tử trong mảng
Gán điểm thứ 1 của mảng diem là 8
diem[1] = 8
Gán điểm thứ 4 của mảng diem bằng điểm thứ nhất cộng 4
diem[3] = diem[0] + 4
– Cách duyệt mảng:
Thì ta dùng vòng for
Ví dụ duyệt mảng diem
for (int i = 0; i < diem.Length; i++)
{
Console.WriteLine(diem[i].ToString());
}
Duyệt và gán phần tử
for (int i = 0; i < diem.Length; i++)
{
diem[i] += 1;
Console.WriteLine(diem[i].ToString());
}
Hoặc dung hàm foreach để duyệt mảng
– Sao chép mảng
Tạo mảng mới và gán giá trị từ mảng cũ
Dùng CopyTo
int[] mangA = new int[diem.Length];
diem.CopyTo(mangA, 0);
Dùng Array.Copy
Array.Copy(diem, mangA, diem.Length);
Dùng Clone
mangA = (int[]) diem.Clone();
– Đảo Mảng:
Phương thức Reverse của lớp Array thực hiện việc đảo thứ tự các phần tử trong mảng. Cú pháp thực hiện:
int[] mang = { 1, 2, 3, 4, 5, 6 };
Array.Reverse(mang);
Kết quả:
mang = { 6,5,4,3,2,1};
– Sắp xếp mảng
Phương thức Sort() của lớp Array thực hiện việc sắp xếp các phần tử trong mảng. Cú pháp thực hiện:
Array.Sort(ten_mang);
Ví dụ:
int[] mang = { 5, 1, 3, 4, 2 };
Array.Sort(mang);
Kết quả:
mang = { 1, 2, 3, 4, 5, 6};
– Tìm kiếm trong mảng
Tìm kiếm trên mảng đã được sắp xếp
Phương thức BinarySearch của lớp Array thực hiện việc tìm kiếm một giá trị trong một mảng đã được sắp xếp trước, trả về kết quả là số nguyên cho biết chỉ số index của phần tử tìm được, nếu không tìm được thì trả về -1. Cú pháp thực hiện:
int vitri = Array.BinarySearch(tenMang, giaTriCanTim);
VD:
int vitri = Array.BinarySearch(mang, 3);
Kết quả vitri=3 (Tìm thấy số 1 ở vị trí thứ 3)
int vitri = Array.BinarySearch(mang, 55);
Kết quả vitri=-1 (-1 tức là không tìm thấy số 55)
** Tìm Kiếm mảng chưa sắp xếp
- Giải pháp 1: Sắp xếp mảng trước, sau đó gọi hàm tìm kiếm nhị phân(đơn giản, tuy nhiên nếu trường hợp không được thay đổi giá trị gốc thì không được dùng giải pháp này)
- Giải pháp 2: Không sắp xếp, tiến hành dùng giải thuật tìm kiếm tuyến tính.
- v Giải thuật tìm kiếm tuyến tính
- v Tại vị trí thứ i nếu giá trị trong dữ liệu đúng với khoá cần tìm kiếm -> tìm thấy. Nếu không đúng tìm đến phần tử kế tiếp i+1
- v Nếu sau khi xét hết N phần tử mà không có giá trị khoá cần tìm à không tìm thấy
- v Bước 1: i = 0; bắt đầu từ phần tử đầu tiên của dãy
- v Bước 2: So sánh a[i] với x, có 2 khả năng :
- v + a[i] = x : Tìm thấy. Dừng
- v + a[i] ≠ x : Sang Bước 3.
- v Bước 3 : i = i+1; xét tiếp phần tử kế trong mảng
- v Nếu i = N: Hết mảng,không tìm thấy.Dừng
- v Ngược lại: Lặp lại Bước 2.