Học Lập Trình

Xử Lý Mảng Trong C#

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


Xử Lý Mảng Trong C#

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.