Nội dung chính
Bài tập Java - Chèn phần tử vào mảng trong Java
Đề 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.
File: BaiTap24.java
package vn.kienthuclaptrinh.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 kienthuclaptrinh.net */ 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