Main content:
      Basic skills for working with arrays
      More skills for working with arrays
      How to work with two-dimensional arrays
-----
1. Basic skills for working with arrays
- Cú pháp khai báo mảng 1 chiều:
- Ví dụ:









- Khai báo mảng và khởi tạo giá trị:


- Để lấy độ dài của mảng, dùng cú pháp: <Tên Mảng>.length

2. More skills for working with arrays:
Ví dụ 1: Dùng hàm sort(..) có sẵn trong lớp Array để sắp xếp tăng dần
import java.util.Arrays;

public class Main {
       public static void main(String[] args) {
              int number[] = {4, 3, 2, 1, 5};
             
              Arrays.sort(number);
              for (int i : number) {
                     System.out.print(i + " ");
              }
       }
}
Kết quả:

3. How to work with two-dimensional arrays:
- Cú pháp và gán giá trị mảng hai chiều:


Bài tập:
1. Viết chương trình khởi tạo một mảng một chiều với giá trị ngẫu nhiên các số tự nhiên với số lượng phần tử của mảng nhập từ bàn phím, sau đó sắp xếp mảng rồi in ra. Viết chương trình dựa theo các hàm gợi ý sau:
   public static int[] KhoiTao(int n);
   public static void InMang(int A[], int n);
   public static void SapXep(int A[], int n)
Mã nguồn:
import java.util.Random;
import java.util.Scanner;
import java.lang.Math;

public class Mang1Chieu {
       public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              System.out.print("Nhap n = ");
              int n = scanner.nextInt();
             
              //khai báo mảng a[n] -> nhưng không khởi tạo
              int a[];
             
              a = KhoiTao(n);
              InMang(a, n);
              SapXep(a, n);
              InMang(a, n);
       }
      
       public static int[] KhoiTao(int n) {
              int A[] = new int[n];//khởi tạo cho mảng
              for (int i = 0; i < n; i++) {
                     A[i] = (int) (Math.random() * 100);
              }
              return A;
       }
      
       public static void InMang(int A[], int n) {
              System.out.println("----In mang----");
              for (int i = 0; i < n; i++) {
                     System.out.print(A[i] + ", ");
              }
              System.out.println();
       }
       //Sắp xếp tăng dần
       public static void SapXep(int A[], int n) {
              for (int i = 0; i < n - 1; i++) {
                     for (int j = i + 1; j < n; j++) {
                           if (A[i] > A[j]) {
                                  A[i] = A[i] ^ A[j];
                                  A[j] = A[i] ^ A[j];
                                  A[i] = A[i] ^ A[j];
                           }
                     }
              }
       }
      
}

2.  Viết chương trình khởi tạo một mảng hai chiều với giá trị ngẫu nhiên các số tự nhiên với số lượng phần tử của mảng nhập từ bàn phím, sau đó sắp xếp từng hàng của mảng 2 chiều tăng/hoặc giảm dần rồi in ra. Viết chương trình dựa theo các hàm gợi ý sau:
   public static int[][] KhoiTao(int n, int m);
   public static void InMang(int A[][], int n, int m);
     public static void SapXep(int A[][], int n, int m);//Sắp xếp từng hàng tăng/hoặc giảm dần

Mã nguồn:
import java.util.Scanner;

public class Mang2Chieu {
       public static void main(String[] args) {
              System.out.print("Nhap n, m:");
              Scanner scanner = new Scanner(System.in);
              int n = scanner.nextInt();
              int m = scanner.nextInt();
             
              int a[][];
              a = KhoiTaoMang(n, m);
              System.out.println("----In mang chua sap xep-----");
              InMang(a, n, m);
              SapXep2Chieu(a, n, m);
             System.out.println("--In mang da sap xep tang dang theo tung hang--");
              InMang(a, n, m);
       }

       public static int[][] KhoiTaoMang(int n, int m) {
              int A[][] = new int[n][m];
              for (int i = 0; i < n; i++) {
                     for (int j = 0; j < m; j++) {
                           A[i][j] = (int) (Math.random() * 100);
                     }
              }
              return A;
       }
      
       public static void InMang(int A[][], int n, int m) {
              for (int i = 0; i < A.length; i++) {
                     for (int j = 0; j < A[0].length; j++) {
                           System.out.format("% 4d", A[i][j]);
                     }
                     System.out.println();
              }
       }
       /*--------------------*/
       public static void SapXep2Chieu(int A[][], int n, int m) {
              for (int i = 0; i < n; i++) {
                     SapXep(A[i], m);
              }
       }
       /*--------------------*/
       public static void SapXep(int A[], int n) {
              for (int i = 0; i < n - 1; i++) {
                     for (int j = i + 1; j < n; j++) {
                           if (A[i] > A[j]) {
                                  A[i] = A[i] ^ A[j];
                                  A[j] = A[i] ^ A[j];
                                  A[i] = A[i] ^ A[j];
                           }
                     }
              }
       }
      
}

Kết quả:


3. Viết chương trình tạo một ma trận ngẫu nhiên và hiển thị vị trí (i, j) tất cả các điểm yên ngựa trong ma trận. Điểm yên ngựa là điểm nhỏ nhất hàng chứa nó và lớn nhất cột chứa nó. Ví dụ: với ma trận sau, vị trí điểm yên ngựa (1, 2).




4. Viết chương trình in ra các hình có dạng như hình sau, với n nhập từ bàn phím. Ví dụ dưới đây với n = 10.

5.  Viết chương trình thực hiện các việc sau: