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

Ngày đăng: 1/2/2023 2:05:26 PM

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28     

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

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

Nguồn tin: viettuts