Bài tập Array trong Java có lời giải

Để củng cố lại kiến thức về mảng, eLib giới thiệu đến bạn một số bài tập về Mảng cơ bản. Các bài tập trong phần này thao tác với mảng một chiều và 2 chiều trong java, bạn có thể tham khảo các bài học trước để thực hành lại. Cùng thử nhé!

Mục lục nội dung

Bài tập Array trong Java có lời giải

1. Bài 1

Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Liệt kê các phần tử xuất hiện trong mảng đúng 1 lần.\

Lời giải

Trong bài này chúng tôi sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong mảng đã cho.

File: BaiTap19.java

package vn.eLib.baitap.array;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

/**
 * Chương trình liệt kê số lần xuất hiện các phần tử trong một mảng
 * nhập từ bàn phím trong java.
 *
 * @author eLib.vn
 */
public class BaiTap19 {
  public static Scanner scanner = new Scanner(System. in );

  /**
     * main
     *
     * @param args
     */
  public static void main(String[] args) {
    System.out.print("Nhập số phần tử của mảng: ");
    int n = scanner.nextInt();
    // khởi tạo arr
    int[] arr = new int[n];
    System.out.println("Nhập các phần tử của mảng: ");
    for (int i = 0; i < n; i++) {
      System.out.printf("a[%d] = ", i);
      arr[i] = scanner.nextInt();
    }
    // tìm số lần xuất hiện của các phần tử
    Map < Integer,
    Integer > map = new TreeMap < Integer,
    Integer > ();
    for (int i = 0; i < n; i++) {
      addElement(map, arr[i]);
    }
    System.out.print("Các phần tử xuất hiện 1 lần: ");
    for (Integer key: map.keySet()) {
      if (map.get(key) == 1) {
        System.out.print(key + " ");
      }
    }
  }

  /**
     * Thêm từ vào map
     *
     * @param wordMap: map chứa các từ và số lần xuất hiện
     * @param sb: từ cần thêm vào wordMap
     */
  public static void addElement(Map < Integer, Integer > map, int element) {
    if (map.containsKey(element)) {
      int count = map.get(element) + 1;
      map.put(element, count);
    } else {
      map.put(element, 1);
    }
  }
}
Kết quả:
Nhập số phần tử của mảng: 6
Nhập các phần tử của mảng: 
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 1
a[4] = 2
a[5] = 5
Các phần tử xuất hiện 1 lần: 3 5 

2. Bài 2

Đề bài: Viết chương trình nhập một mảng số nguyên a0, a1, a2, …, an-1. Liệt kê số lần xuất hiện của các phần tử trong một mảng đã cho.

Lời giải

Trong bài này chúng tôi sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong mảng đã cho.

File: BaiTap21.java

package vn.eLib.baitap.array;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

/**
 * Chương trình liệt kê số lần xuất hiện các phần tử trong một mảng
 * nhập từ bàn phím trong java.
 *
 * @author viettuts.vn
 */
public class BaiTap21 {
  public static Scanner scanner = new Scanner(System. in );

  /**
     * main
     *
     * @param args
     */
  public static void main(String[] args) {
    System.out.print("Nhập số phần tử của mảng: ");
    int n = scanner.nextInt();
    // khởi tạo arr
    int[] arr = new int[n];
    System.out.print("Nhập các phần tử của mảng: \n");
    for (int i = 0; i < n; i++) {
      System.out.printf("a[%d] = ", i);
      arr[i] = scanner.nextInt();
    }
    // tìm số lần xuất hiện của các phần tử
    Map < Integer,
    Integer > map = new TreeMap < Integer,
    Integer > ();
    for (int i = 0; i < n; i++) {
      addElement(map, arr[i]);
    }
    System.out.print("Các phần tử xuất hiện 2 lần: \n");
    for (Integer key: map.keySet()) {
      System.out.printf("%d xuất hiện %d lần.\n", key, map.get(key));
    }
  }

  /**
     * Thêm từ vào map
     *
     * @param wordMap: map chứa các từ và số lần xuất hiện
     * @param sb: từ cần thêm vào wordMap
     */
  public static void addElement(Map < Integer, Integer > map, int element) {
    if (map.containsKey(element)) {
      int count = map.get(element) + 1;
      map.put(element, count);
    } else {
      map.put(element, 1);
    }
  }
}
Kết quả:
Nhập số phần tử của mảng: 10
Nhập các phần tử của mảng: 
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 1
a[5] = 2
a[6] = 2
a[7] = 5
a[8] = 6
a[9] = 7
Các phần tử xuất hiện 2 lần: 
1 xuất hiện 2 lần.
2 xuất hiện 3 lần.
3 xuất hiện 1 lần.
4 xuất hiện 1 lần.
5 xuất hiện 1 lần.
6 xuất hiện 1 lần.
7 xuất hiện 1 lần.

3. Bài 3

Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Hãy sắp xếp mảng theo thứ tự tăng dần.

Lời giải

Sau đây là chương trình Java sắp xếp mảng theo thứ tự tăng dần:

File: BaiTap22.java

package vn.eLib.baitap.array;

import java.util.Scanner;

/**
 * Chương trình sắp xếp mảng số nguyên theo thứ tự tăng dần.
 *
 * @author viettuts.vn
 */
public class BaiTap24 {
  public static Scanner scanner = new Scanner(System. in );

  /**
     * main
     *
     * @param args
     */
  public static void main(String[] args) {
    System.out.print("Nhập số phần tử của mảng: ");
    int n = scanner.nextInt();
    // khởi tạo arr
    int[] arr = new int[n];
    System.out.print("Nhập các phần tử của mảng: \n");
    for (int i = 0; i < n; i++) {
      System.out.printf("a[%d] = ", i);
      arr[i] = scanner.nextInt();
    }
    // sắp xếp dãy số theo thứ tự tăng dần
    sortASC(arr);
    System.out.println("Dãy số được sắp xếp tăng dần: ");
    show(arr);
  }

  /**
     * sắp xếp mảng số nguyên theo thứ tự tăng dần
     *
     * @param arr: mảng các số nguyên
     * @param n: số phần tử của mảng
     */
  public static void sortASC(int[] arr) {
    int temp = arr[0];
    for (int i = 0; i < arr.length - 1; i++) {
      for (int j = i + 1; j < arr.length; j++) {
        if (arr[i] > arr[j]) {
          temp = arr[j];
          arr[j] = arr[i];
          arr[i] = temp;
        }
      }
    }
  }

  /**
     * in các phần tử của mảng ra màn hình
     *
     * @param arr: mảng các số nguyên
     * @param n: số phần tử của mảng
     */
  public static void show(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}
Kết quả:
Nhập số phần tử của mảng: 7
Nhập các phần tử của mảng: 
a[0] = 1
a[1] = 2
a[2] = 5
a[3] = 6
a[4] = 3
a[5] = 1
a[6] = 9
Dãy số được sắp xếp tăng dần: 
1 1 2 3 5 6 9 

4. Bài 4

Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Hãy sắp xếp mảng theo thứ tự tăng dần, sau đó chèn phần tử k vào mà vẫn đảm bảo mảng là tăng dần.

Lời giải

Chèn phần tử vào mảng trong java.

Chèn phần tử vào mảng trong java

File: BaiTap24.java

package vn.eLib.baitap.array;

import java.util.Scanner;

/**
 * Chương trình sắp xếp mảng theo thứ tự tăng dần,
 * sau đó chèn phần tử k vào mà vẫn đảm bảo mảng là tăng dần.
 *
 * @author eLib.vn
 */
public class BaiTap24 {
  public static Scanner scanner = new Scanner(System. in );

  /**
     * main
     *
     * @param args
     */
  public static void main(String[] args) {
    System.out.print("Nhập số phần tử của mảng: ");
    int n = scanner.nextInt();
    // khởi tạo arr
    int[] arr = new int[n];
    System.out.print("Nhập các phần tử của mảng: \n");
    for (int i = 0; i < n; i++) {
      System.out.printf("a[%d] = ", i);
      arr[i] = scanner.nextInt();
    }
    System.out.print("Nhập phần tử k = ");
    int k = scanner.nextInt();
    // sắp xếp dãy số theo thứ tự tăng dần
    sortASC(arr);
    System.out.print("Sắp xếp mảng tăng dần: ");
    show(arr);
    System.out.printf("\nChèn phần tử %d vào mảng.", k);
    arr = insert(arr, k);
    System.out.print("\nMảng sau khi chèn: ");
    show(arr);
  }

  /**
     * sắp xếp mảng số nguyên theo thứ tự tăng dần
     *
     * @param arr: mảng các số nguyên
     */
  public static void sortASC(int[] arr) {
    int temp = arr[0];
    for (int i = 0; i < arr.length - 1; i++) {
      for (int j = i + 1; j < arr.length; j++) {
        if (arr[i] > arr[j]) {
          temp = arr[j];
          arr[j] = arr[i];
          arr[i] = temp;
        }
      }
    }
  }

  /**
     * chèn phần tử vào mảng số nguyên tăng dần
     * sau khi chèn mảng vẫn duy trì thứ tự tăng dần
     *
     * @param arr: mảng số nguyên tăng dần
     * @param k: phần tử chèn vào mảng arr
     */
  public static int[] insert(int[] arr, int k) {
    int arrIndex = arr.length - 1;
    int tempIndex = arr.length;
    int[] tempArr = new int[tempIndex + 1];
    boolean inserted = false;

    for (int i = tempIndex; i >= 0; i--) {
      if (arrIndex > -1 && arr[arrIndex] > k) {
        tempArr[i] = arr[arrIndex--];
      } else {
        if (!inserted) {
          tempArr[i] = k;
          inserted = true;
        } else {
          tempArr[i] = arr[arrIndex--];
        }
      }
    }
    return tempArr;
  }

  /**
     * in các phần tử của mảng ra màn hình
     *
     * @param arr: mảng các số nguyên
     */
  public static void show(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}
Kết quả:
Nhập số phần tử của mảng: 5
Nhập các phần tử của mảng: 
a[0] = 2
a[1] = 3
a[2] = 4
a[3] = 5
a[4] = 6
Nhập phần tử k = 1
Sắp xếp mảng tăng dần: 2 3 4 5 6 
Chèn phần tử 1 vào mảng.
Mảng sau khi chèn: 1 2 3 4 5 6 

Trên đây là 4 bài tập cơ bản về mảng trong Java mà eLib muốn giới thiệu đến bạn. Có rất nhiều cách giải và còn rất nhiều dạng bài tập liên quan đến chuỗi, bạn có thể tham khảo trên các bài viết của eLib. Chúc các bạn thành công!

Ngày:05/10/2020 Chia sẻ bởi:Xuân Quỳnh

CÓ THỂ BẠN QUAN TÂM