18/03/2021, 09:40

Bài tập Java - Chèn phần tử vào mảng trong java

Bài tập Java - Sắp xếp mảng theo thứ tự giảm dần Nội dung chính Bài tập Java - Chèn phần tử vào mảng trong Java Lời giải 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. ...

Bài tập Java - Sắp xếp mảng theo thứ tự giảm dần

Nội dung chính

  • Bài tập Java - Chèn phần tử vào mảng trong Java
  • Lời giải

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.

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

File: BaiTap24.java


package vn.viettuts.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 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: 
");
        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("
Chèn phần tử %d vào mảng.", k);
        arr = insert(arr, k);
        System.out.print("
Mả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 
Bài tập Java - Sắp xếp mảng theo thứ tự giảm dần
0