Hello anh em! Tiếp tục series chiến LAB211 Java OOP tại FPT, mỗi bài lab đều là một viên gạch quan trọng xây dựng nền tảng tư duy lập trình vững chắc. Hôm nay trên devshare.pro.vn, chúng ta cùng giải một bài tưởng như đơn giản mà vẫn đủ để “xoắn não” nhẹ: Chèn phần tử mới vào mảng đã sắp xếp (Insert New Element Into Sorted Array).
Nghe qua thì yêu cầu rất cơ bản: nhập mảng → sắp xếp → chèn phần tử mới → in ra màn hình. Nhưng thực tế, để xử lý mượt mà thao tác cấp phát lại mảng (vì mảng trong Java có kích thước cố định) và chèn đúng vị trí mà không làm xáo trộn thứ tự tăng dần thì lại là một thử thách thú vị. Đây là một bài lab cực kỳ hiệu quả để rèn luyện kỹ năng thao tác với mảng một chiều, sử dụng Scanner và vòng lặp. Nếu bạn đang theo dõi series LAB211, đừng bỏ qua bài tập này nhé!
Mục tiêu bài lab Insert New Element Into Sorted Array
- Nhập vào một mảng số nguyên từ bàn phím với kích thước do người dùng định nghĩa.
- Thực hiện sắp xếp mảng theo thứ tự tăng dần (Ascending order).
- Yêu cầu người dùng nhập một giá trị mới và chèn phần tử mới đó vào mảng sao cho mảng vẫn giữ nguyên thứ tự sắp xếp.
- Hiển thị đầy đủ mảng trước và sau khi chèn ra màn hình.
- Luyện tập tư duy thuật toán cơ bản về xử lý dịch dịch phần tử (Shift elements) trong mảng tĩnh.
Đề bài gốc – Insert New Element (LAB211)
Title:
Insert new element into sorted arrayBackground Context:
Write a Java program to insert new element into sorted array.Program Specifications:
1. Ask the user to enter the size of the array.
2. Ask the user to enter elements of the array.
3. Sort the array in ascending order and display it.
4. Ask the user to enter a new value.
5. Insert the new value into the array so that the array remains sorted.
6. Display the new array.
Source Code – Insert New Element Into Sorted Array (LAB211 FPT)
Lưu ý: Code dưới đây mang tính chất tham khảo. Anh em nên tự code lại để hiểu rõ bản chất của thuật toán chèn và cách Java quản lý bộ nhớ mảng thay vì chỉ copy & paste nhé!
import java.util.Arrays;
import java.util.Scanner;
public class InsertElement {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Please enter size of array: ");
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
System.out.print("Enter element " + i + ": ");
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
System.out.print("The array after sorting: ");
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
System.out.print("Please enter new value: ");
int newValue = sc.nextInt();
// Tạo mảng mới lớn hơn mảng cũ 1 đơn vị
int[] newArr = new int[n + 1];
int i = 0, j = 0;
// Copy phần tử nhỏ hơn newValue vào mảng mới
while (i < n && arr[i] < newValue) {
newArr[j++] = arr[i++];
}
// Chèn phần tử mới vào đúng vị trí
newArr[j++] = newValue;
// Copy nốt các phần tử còn lại
while (i < n) {
newArr[j++] = arr[i++];
}
System.out.print("New array: ");
for (int num : newArr) {
System.out.print(num + " ");
}
System.out.println();
sc.close();
}
}
Lời kết
Bài lab Insert New Element Into Sorted Array LAB211 FPT không chỉ giúp bạn làm quen với cách cấp phát lại mảng trong Java (bằng cách tạo mảng mới có kích thước nhỉnh hơn mảng cũ 1 đơn vị) mà còn định hình cho bạn tư duy phân chia logic thành từng bước nhỏ. Đây là nền tảng rất quan trọng để sau này bạn có thể tự tin làm việc với cấu trúc dữ liệu tĩnh trước khi bước sang các Collection linh hoạt như ArrayList hay LinkedList.
Ngoài bài Insert New Element, trong series LAB211 Java OOP trên DevSharePro bạn có thể tham khảo thêm các bài lab hấp dẫn khác:
Giải Bài Reverse a String – Java OOP (LAB211 – FPT)
Giải Bài Candidate Management System – Java OOP (LAB211 – FPT)
Đừng quên theo dõi blog để cập nhật thêm nhiều bài giải lab kèm source code chi tiết nhé!
Thông tin!
Mình có nhận giải lab thuê, hỗ trợ project, fix bug, training nhanh cho các môn ngành kỹ thuật từ toán đến lập trình phù hợp sinh viên FPT học đúng tiến độ.
Cam kết uy tín – đúng deadline – bảo mật tuyệt đối.
Liên hệ: Zalo.me/0973898830{alertInfo}
