Upload
vanmien
View
216
Download
0
Embed Size (px)
Citation preview
Click to edit Master subtitle style
MẢNG 1 CHIỀU & LIST
1
Khoa Công nghệ thông tin Trường đại học Ngoại ngữ - Tin học TP.HCM (HUFLIT)
Là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa Biểu diễn một dãy các biến cùng kiểu dữ liệu Kích thước mảng được xác định khi khai báo và không thể thay đổi
Mảng 1 chiều
Cần xác định số phần tử của mảng khi khai báo Từ khóa new khởi tạo các phần tử cho mảng Cú pháp:
Khai báo mảng
Type[] arrayName = new Type[number];
Khai báo mảng 1 chiều gồm 5 phần tử kiểu int
Ví dụ
Chỉ số 0 1 2 3 4
Phần tử A[0] A[1] A[2] A[3] A[4]
int[] A = new int[5];
Là một kiểu dữ liệu tập hợp được xây dựng sẵn trong C# Biểu diễn một dãy các biến cùng kiểu dữ liệu Số lượng phần tử trong List không cố định, có thể thay đổi trong khi lập trình Sử dụng chỉ số để truy xuất phần tử giống mảng thông thường
List (Danh sách)
7
Không cần xác định số phần tử ban đầu Dùng toán tử Add() để thêm các phần tử vào trong List Cú pháp:
Khai báo List
8
List<int> list = new List<int>(); list.Add(value);
List gồm 5 phần tử kiểu int:
Ví dụ
9
List<int> list = new List<int>(); list.Add(10); list.Add(20); list.Add(30); list.Add(40); list.Add(50);
Chỉ số 0 1 2 3 4
Phần tử 10 20 30 40 50
Có thể truy xuất phần tử trong List bằng chỉ số (tương tự mảng) hoặc dùng vòng lặp foreach
Truy xuất List
10
for(int i=0; i<n;i++) { Console.WriteLine(list[i]); }
foreach(int k in list) { Console.WriteLine(k); }
Yêu cầu: Nhập vào từ bàn phím một mảng a gồm n phần tử. Ý tưởng:
Nhập số phần tử của mảng. Khởi tạo mảng có n phần tử. Nhập từng phần tử của mảng: từ a[0] đến a[n-1]
Nhập mảng
12
Nhập mảng 1 chiều
13
static void NhapMang(out int[] a) { Console.WriteLine("So phan tu: "); int n = Convert.ToInt32(Console.ReadLine()); a = new int[n]; for (int i = 0; i < a.Length; i++) { a[i] = Convert.ToInt32(Console.ReadLine()); } }
Nhập List
14
static void NhapDanhSach(out List<int> l) { Console.WriteLine("So phan tu: "); int n = Convert.ToInt32(Console.ReadLine()); l = new List<int>(); for (int i = 0; i < n; i++) { int t = Convert.ToInt32(Console.ReadLine()); a.Add(t); } }
Yêu cầu: In ra màn hình mảng a gồm n phần tử. Ý tưởng:
Duyệt mảng từ phần tử 0 đến phần tử n-1; In giá trị của phần tử a[i] trong mỗi lần lặp.
Xuất mảng
15
Ví dụ: Hàm xuất mảng
Xuất mảng 1 chiều
16
static void XuatMang(int[] a) { Console.WriteLine("Cac phan tu mang:"); for (int i = 0; i < a.Length; i++) { Console.WriteLine("a[{0}] = {1}", i, a[i]); } }
Ví dụ: Hàm xuất danh sách
Xuất List
17
static void XuatDanhSach(List<int> l) { Console.WriteLine("Cac phan tu danh sach:"); foreach (int i in l) { Console.WriteLine("{0}", i); } }
Có thể sử dụng lệnh Count để biết số phần tử của List
Xuất List
18
static void XuatDanhSach(List<int> l) { Console.WriteLine("Cac phan tu danh sach:"); for (int i = 0; i < l.Count; i++) { Console.WriteLine("{0}", l[i]); } }
Bài 1: Viết hàm đọc mảng A từ file Input.txt. Tăng giá trị các phần tử chẵn của A lên gấp đôi. Ghi mảng A sau khi xử lý vào file Output.txt. Bài 2: Làm lại bài tập 1 bằng cách sử dụng List. Bài 3: Viết chương trình nhập vào mảng số nguyên. Sau đó nhập vào số nguyên k. Hãy liệt kê các phần tử của mảng là số nguyên tố nhỏ hơn k, nếu mảng không tồn tại số nguyên tố nào nhỏ hơn k thì phải xuất ra một câu thông báo.
Bài tập thực hành
19
Yêu cầu: Sắp xếp các phần tử trong mảng A theo thứ tự tăng dần/giảm dần. Ý tưởng:
Dùng hai vòng for để so sánh tất cả các cặp phần tử với nhau. Vòng lặp ngoài sẽ chạy từ đầu dãy đến phần tử kế cuối. Vòng lặp trong sẽ chạy từ phần tử tiếp theo của vị trí đang xét ở vòng lặp ngoài. Mỗi lần xét ta sẽ so sánh 2 phần tử trong cặp và hoán vị các cặp phần tử nghịch thế (sai thứ tự)
Thuật toán Interchange Sort
21
Sắp xếp mảng tăng dần
Ví dụ:
22
static void InterchangeSort(ref int[] a) { for (int i = 0; i < a.Length-1; i++) for (int j = i+1; j < a.Length; j++) if (a[i] > a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } }
Bài 1: Viết chương trình định nghĩa hàm sắp xếp mảng theo thứ tự giảm dần. Bài 2: Viết chương trình nhập một mảng số nguyên. Nhập 2 số nguyên k, l (k < l). Định nghĩa hàm sắp xếp các phần tử trong đoạn [k;l] theo thứ tự tăng dần.
Bài tập thực hành
23
Bài 3: Viết chương trình sắp xếp mảng theo thứ tự giảm dần của các phần tử là số nguyên tố. Bài 4: Viết chương trình nhập một mảng số nguyên n phần tử. Nhập số nguyên k. Định nghĩa hàm tìm phần tử lớn thứ k trong mảng.
Bài tập thực hành
24