25
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)

MẢNG 1 CHIỀU & LISTanhtt/Slidesss/KTLT182/Chap31.pdf · 2018-03-29 · Khai báo mảng 1 chiều gồm 5 phần tử kiểu int. ... 7 ; Không cần xác ... Viết chương

  • 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)

Khái niệm mảng 1 chiều và List Nhập/Xuất mảng 1 chiều và List Giải thuật sắp xếp mảng

Nội dung

2

KHÁI NIỆM

3

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); }

NHẬP/XUẤT

11

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

SẮP XẾP

20

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

Bài 5: Viết chương trình nhập mảng số nguyên. Nhập số nguyên k, l. Định nghĩa hàm sắp xếp tăng dần các phần tử trong đoạn [k,l] và sắp xếp giảm dần các phần tử ngoài đoạn [k,l].

Bài tập thực hành

25