温馨提示!

文中代码均于VScode程序中正常运行,使用其他软件程序请适当做出对应的调整!!

代码压缩包:

And 1.简单逻辑算法

no01九九乘法表系列

no02星星系列

no03完数

no04斐波纳契数列

no05水仙花数

no06阶乘

no07回文数

no08输出最大值和最小值

no01九九乘法表系列

请输入图片描述

完整代码

public class no01九九乘法表系列 {// 保持与java文件名称相对应
    public static void main(String[] args) {// 文件程序的主方法,这里用于调用其他代码块
        // 控制
        hr();// hr分割
        main0();// 调用常规99乘法表
        hr();
        main1();// 调用常规乘法表列倒叙
        hr();
        main2();// main1左右翻转
        hr();
        main3();// main0左右翻转
        // 控制
    }

    public static void hr() {// 代码分割
        char character = '-'; // 打印字符
        int count = 81; // 重复数

        for (int i = 0; i < count; i++) {
            System.out.print(character);
        }
        System.out.print("\n");
    }

    public static void main0() {// 常规99乘法表
        for (int i = 1; i <= 9; i++) { // 控制行,从1开始循环
            for (int j = 1; j <= i; j++) { // 控制每行对应的数
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            // 第一次循环i是1 j也是1 结果1*1=1 这是图1第一种
            // 第二次循环i是2 j是1和2 结果2*1=2 2*2=4
            // 第三次循环i是3 j是1、2、3 结果3*1=3 3*2=6 3*3=9
            // 同理
            System.out.println();// 每次循环完换行
        }
    }

    public static void main1() {// 常规乘法表列倒叙
        // 添加第二个程序的代码
        for (int i = 9; i >= 1; i--) { // 控制行,从9开始循环
            for (int j = 1; j <= i; j++) { // 控制每行对应的数
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            // 第一次循环i是9 j也是1到9 9*1 9*2.... 这是第二图
            // 第二次循环i是8 j是1到8
            // 同理
            System.out.println();// 每次循环完换行
        }
    }

    public static void main2() {
        for (int i = 9; i >= 1; i--) { // 控制行,从9开始循环
            for (int m = 1; m <= 9 - i; m++) {
                System.out.print("\t");// 控制每行对应的数
                // 第一次i=9的时候m是false不运行
                // 第二次i=8的时候m是1,运行一次
                // i=7,运行2次 同理 关键是9-i要想到
            }
            for (int j = 1; j <= i; j++) { // 控制每行对应的数
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            // 第一次循环i是9 j也是1到9
            // 第二次循环i是8 j是1到8
            // 同理
            System.out.println();// 每次循环完换行
        }
    }

    public static void main3() {
        for (int i = 1; i <= 9; i++) { // 控制行,从9开始循环
            for (int m = 9; m > i; m--) {
                System.out.print("\t");// 控制每行对应的数
                // 第一次i=1的时候m循环8次
                // 第二次i=2的时m循环7次
                // 同理
            }
            for (int j = 1; j <= i; j++) { // 控制每行对应的数
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            // 第一次循环i是1 j也是1到1
            // 第二次循环i是2 j是1和2
            // 同理
            System.out.println();// 每次循环完换行
        }
    }

}

no02星星系列

image.png

完整代码


public class no02星星系列 {
    public static void main(String[] args) {
        hr();
        main0();// 平行四边形
        hr();
        main1();// 实心正三角形
        hr();
        main2();// 实心菱形
        hr();
        main3_0();// 空心菱形1
        main3_1();// 空心菱形2
        hr();
        main4();// 空心正三角形
    }

    public static void hr() {// 代码分割
        char character = '-'; // 打印字符
        int count = 30; // 重复数

        for (int i = 0; i < count; i++) {
            System.out.print(character);
        }
        System.out.print("\n");
    }

    public static void main0() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");// 输出错误用其他字符代替一下
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次空格 同理
            }
            for (int k = 1; k <= 5; k++) {
                System.out.print("*");
                // K控制每行多少个 都是5个
            }
            System.out.println();
        }
    }

    public static void main1() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");// 输出错误用其他字符代替一下
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次空格 同理
            }
            for (int k = 1; k <= (2 * i) - 1; k++) {
                System.out.print("*");
                // i=1 k=1
                // i=2 K=3同理,3就是循环了3次*
            }
            System.out.println();
        }
    }

    public static void main2() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次 同理
            }
            for (int k = 1; k <= (2 * i) - 1; k++) {
                System.out.print("*");
                // i=1 k=1
                // i=2 K=3同理,3就是循环了3次*
            }
            System.out.println();
        } // 下面新的循环是控制倒的三角
        for (int ii = 4; ii >= 1; ii--) { // ii控制行,共4行,倒3角有4行
            for (int jj = 1; jj <= 5 - ii; jj++) {// jj控制每一行的数量
                System.out.print(" ");
                // 发现ii=4时候 jj循环1次 ii=3 jj循环2次
            }
            for (int kk = 1; kk <= (2 * ii) - 1; kk++) {
                System.out.print("*");
                // ii=4 kk=7 就是7颗*
                // ii=3 Kk=3同理,3就是循环了3次*
            }
            System.out.println();
        }
    }

    public static void main3_0() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次 同理
            }
            for (int k = i; k == i; k++) {// 即每次循环画1次
                System.out.print("*");
                // 前面画完空格 再接1颗*即可
            }
            for (int m = 2; m < 2 * i - 1; m++) {
                System.out.print(" ");// 这是空格的规律从第二行开始
                // i=1,不运行 i=2 2<3 第二行只循环1次空格
            }
            if (i > 1) {
                for (int kk = i; kk == i; kk++) {
                    System.out.print("*");
                    // 因为第一行已经有了。所以第二行开始
                }
            }
            System.out.println();
        } // 下面新的循环是控制倒的三角,同理
        for (int ii = 4; ii >= 1; ii--) { // ii控制行,共4行,倒3角有4行
            for (int jj = 1; jj <= 5 - ii; jj++) {// jj控制每一行的数量
                System.out.print(" ");
                // 发现ii=4时候 jj循环1次 ii=3 jj循环2次
            }
            for (int kk = ii; kk <= ii; kk++) {
                System.out.print("*");
            }
            for (int m = 2; m < 2 * ii - 1; m++) {
                System.out.print(" ");
            }
            if (ii > 1) {
                for (int kk = ii; kk <= ii; kk++) {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }

    public static void main3_1() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次 同理
            }
            for (int m = 1; m <= 2 * i - 1; m++) {
                if (m == 1 || m == 2 * i - 1) {
                    System.out.print("*");// 这是直接来判断开头和结尾
                    // i=1 m=1 进判断 循环1次*
                    // i=2 m=1,2,3 正常循环3次 进判断,1时候打印*,m==2*2-1==3 所以m=2时候是空格 3时候才是*
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        } // 下面新的循环是控制倒的三角,同理
        for (int ii = 4; ii >= 1; ii--) { // ii控制行,共4行,倒3角有4行
            for (int jj = 1; jj <= 5 - ii; jj++) {
                System.out.print(" ");
            }
            for (int m = 1; m <= 2 * ii - 1; m++) {
                if (m == 1 || m == 2 * ii - 1) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

    public static void main4() {
        for (int i = 1; i <= 5; i++) {// i控制行,共5行
            for (int j = 5; j > i; j--) {// j控制每一行的数量
                System.out.print(" ");
                // i=1 j=4,3,2,1 输出4个空格
                // i=2 j循环3次 同理
            }
            for (int m = 1; m <= 2 * i - 1; m++) {
                if (m == 1 || m == 2 * i - 1 || i == 5) {
                    System.out.print("*");// 这是直接来判断开头和结尾
                    // i=1 m=1 进判断 循环1次*
                    // i=2 m=1,2,3 正常循环3次 进判断,1时候打印*,m==2*2-1==3 所以m=2时候是空格 3时候才是*
                    // 补一个i==5就行了,就直接打印9颗,m<=9
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

no03完数

image.png

完整代码

import java.util.Scanner;

public class no03完数 {
    public static void main(String[] args) {
        hr();
        main0();// 用户输入判断
        hr();
        main1();// 区间存在
    }

    public static void hr() {// 代码分割
        char character = '-'; // 打印字符
        int count = 10; // 重复数

        for (int i = 0; i < count; i++) {
            System.out.print(character);
        }
        System.out.print("\n");
    }

    public static void main0() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int a = scanner.nextInt();
        int sum = 0;
        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                sum += i;
                System.out.println(i);
            }
        }
        if (sum == a) {
            System.out.println(a + "是完数");
        } else {
            System.out.println(a + "不是完数");
        }

    }

    public static void main1() {
        for (int a = 100; a < 1000; a++) {
            int sum = 0;
            for (int i = 1; i < a; i++) {
                if (a % i == 0) {
                    sum += i;
                }
            }
            if (sum == a) {
                System.out.println("100到999之间的完数有:" + a);
            }
        }
    }
}

no04斐波纳契数列

image.png

完整代码

public class no04斐波纳契数列 {
    public static void main(String[] args) {
        int b = 1;
        int a = 0;
        for (int m = 1; m < 6; m++) {
            System.out.print(a + "\t" + b + "\t");
            a = a + b;
            b = a + b;
        }
    }
}

no05水仙花数

image.png

完整代码

import java.util.Scanner;

public class no05水仙花数 {
    public static void main(String[] args) {
        hr();
        main0();// 区域存在
        main1();// 输入判断
    }

    public static void hr() {// 代码分割
        char character = '-'; // 打印字符
        int count = 50; // 重复数

        for (int i = 0; i < count; i++) {
            System.out.print(character);
        }
        System.out.print("\n");
    }

    public static void main0() {
        for (int a = 100; a < 1000; a++) {
            int b = a / 100; // 百位
            int c = a % 10; // 个位
            int d = a / 10 % 10;// 十位 a == Math.pow(b,3) + Math.pow(c,3) + Math.pow(d,3)
            if (a == b * b * b + c * c * c + d * d * d) {
                System.out.println(a + "这是水仙数");
            }
        }
    }

    public static void main1() {
        try {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个三位的正整数:");
            int a = scanner.nextInt();
            int b = a / 100; // 百位
            int c = a % 10; // 个位
            int d = a / 10 % 10;// 十位
            if (a == b * b * b + c * c * c + d * d * d) {
                System.out.println(a + "这是水仙数");
            } else {
                System.out.println(a + "不是水仙数");
            }
        } catch (Exception e) {
            System.out.println("您的输入有误!");
        }
    }
}

no06阶乘

image.png

完整代码

public class no06阶乘 {
    public static void main(String[] args) {
        jieChenHe1();
        jieChenHe2();
    }

    public static void jieChenHe1() {
        long sum = 0;
        int n = 5;
        for (int i = 1; i <= n; i += 2) { // 求1!+3!+5!
            long temp = 1;
            for (int j = 1; j <= i; j++) {
                temp *= j;
            }
            sum += temp;
        }
        System.out.println("1!+3!+5!= " + sum);
    }

    public static void jieChenHe2() {
        int sum = 0;
        int n = 5;
        int factorial = 1;
        for (int i = 1; i <= n; i++) {
            factorial *= i;
            sum += factorial;
        }
        System.out.println("1到5的阶乘和: " + sum);
    }

}

no07回文数

image.pngimage.png

完整代码

import java.util.Scanner;

public class no07回文数 {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个数:");
            int i = scanner.nextInt();
            int temp = i;
            int num = 0;
            while (i != 0) {
                int ge = i % 10;
                i = i / 10;
                num = num * 10 + ge;
            }
            if (temp == num) {
                System.out.println("这是回文数");
            } else {
                System.out.println("这不是回文数");
            }
        } catch (Exception e) {
            System.out.println("输入有误!");
        }
    }
}

no08输出最大值和最小值

image.png

完整代码


//////////////////////////////
//输入10个数,输出最大值和最小值
//////////////////////////////
import java.util.Scanner;

public class no08输出最大值和最小值 {
    public static void main(String[] args) {
        // getMaxAndMin();
        newgetMaxAndMin();// 优化
    }

    public static void getMaxAndMin() {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第1个数:");
            // 把第一次输入的数字赋给max和min
            int num1 = sc.nextInt();
            int max = num1;
            int min = num1;
            int count = 2;
            while (count <= 10) {
                System.out.println("请输入第" + count + "个数字:");
                int numx = sc.nextInt();
                if (numx > max) {
                    max = numx;// 比最大的值还大
                } else if (numx < min) {
                    min = numx;// 比最小的值还小
                }
                count++;
            }
            System.out.println("最大值:" + max + ", 最小值:" + min);
        } catch (Exception e) {
            System.out.println("输入错误,请重新输入!!!");
            getMaxAndMin();
        }
    }

    public static void newgetMaxAndMin() {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第1个数:");
            // 把第一次输入的数字赋给max和min
            int num1 = sc.nextInt();

            int max = num1;
            int min = num1;
            int count = 2;
            while (count <= 10) {
                try {
                    System.out.println("请输入第" + count + "个数字:");
                    int numx = sc.nextInt();
                    if (numx > max) {
                        max = numx;// 比最大的值还大
                    } else if (numx < min) {
                        min = numx;// 比最小的值还小
                    }
                    count++;
                } catch (Exception e) {
                    System.out.println("输入错误,请重新输入!!!");
                    sc = new Scanner(System.in);
                }
            }
            System.out.println("最大值:" + max + ", 最小值:" + min);
        } catch (Exception e) {
            System.out.println("输入错误,请重新输入!!!");
            getMaxAndMin();
        }
    }
}

And 2.经典的排序算法

no01冒泡排序

no02选择排序

no03插入排序

no04归并排序

no05希尔排序

no06快速排序

no07堆排序

no08基数排序

no01冒泡排序

image.png

完整代码

public class no01冒泡排序 {
    public static void main(String[] args) {
        main0();
        System.out.println("\n");
        main1();// 优化
    }

    public static void main0() {
        int[] a = new int[] { 3, 1, 6, 2, 5 };
        // 外层for循环控制轮数,循环数组长度-1轮
        for (int i = 0; i < a.length - 1; i++) {
            // 内层for循环控制比较的次数
            for (int k = 0; k < a.length - 1 - i; k++) {
                if (a[k] > a[k + 1]) {
                    var c = a[k];
                    a[k] = a[k + 1];
                    a[k + 1] = c;
                }

            }
        }
        // 使用循环打印数组元素
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }

    }

    public static void main1() {
        int[] a = new int[] { 3, 1, 4, 886, 2, 5 };
        Boolean Sort = false;
        // 外层for循环控制轮数,循环n-1轮
        for (int i = 0; i < a.length - 1; i++) {
            // 内层for循环控制比较的次数
            if (!Sort) {
                Sort = true;
                for (int k = 0; k < a.length - 1 - i; k++) {
                    if (a[k] > a[k + 1]) {
                        var c = a[k];
                        a[k] = a[k + 1];
                        a[k + 1] = c;
                        Sort = false;
                    }
                }
            } else {
                break;
            }
        }
        for (int m = 0; m < a.length; m++) {
            System.out.print(a[m] + " ");
        }
    }
}

no02选择排序

image.png

完整代码

public class no02选择排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        for (int i = 0; i < arr.length - 1; i++) {
            int k = i;
            for (int j = k + 1; j < arr.length; j++) {
                if (arr[j] < arr[k]) {
                    k = j;
                }
            }
            if (k != i) {
                int t = arr[k];
                arr[k] = arr[i];
                arr[i] = t;
            }
        }
        for (int m = 0; m < arr.length; m++) {
            System.out.print(arr[m] + "\t");
        }
    }
}

no03插入排序

完整代码

public class no03插入排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        for (int i = 0; i < arr.length; i++) {
            // arr[j]~arr[j-1]
            for (int j = i; j > 0; j--) {
                if (arr[j] < arr[j - 1]) {
                    int t = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = t;
                } else {
                    break;
                }
            }
        }
        for (int m = 0; m < arr.length; m++) {
            System.out.print(arr[m] + "\t");
        }
    }
}

no04归并排序

完整代码

public class no04归并排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        mergeSort(arr, 0, arr.length - 1);

        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void mergeSort(int[] arr, int left, int right) {
        if (left < right) {
            int mid = (left + right) / 2;

            // 分割数组:递归调用mergeSort对左右两部分进行归并排序
            mergeSort(arr, left, mid);
            mergeSort(arr, mid + 1, right);

            // 合并有序数组
            merge(arr, left, mid, right);
        }
    }

    public static void merge(int[] arr, int left, int mid, int right) {
        int n1 = mid - left + 1;
        int n2 = right - mid;

        int[] L = new int[n1];
        int[] R = new int[n2];

        // 将数据复制到临时数组L和R
        for (int i = 0; i < n1; i++) {
            L[i] = arr[left + i];
        }
        for (int j = 0; j < n2; j++) {
            R[j] = arr[mid + 1 + j];
        }

        // 归并临时数组L和R
        int i = 0, j = 0;
        int k = left;
        while (i < n1 && j < n2) {
            if (L[i] <= R[j]) {
                arr[k] = L[i];
                i++;
            } else {
                arr[k] = R[j];
                j++;
            }
            k++;
        }

        // 复制剩余的元素
        while (i < n1) {
            arr[k] = L[i];
            i++;
            k++;
        }

        while (j < n2) {
            arr[k] = R[j];
            j++;
            k++;
        }
    }
}

no05希尔排序

完整代码

public class no05希尔排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        shellSort(arr);

        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void shellSort(int[] arr) {
        int n = arr.length;

        // 初始步长为数组长度的一半,然后逐步减小步长
        for (int gap = n / 2; gap > 0; gap /= 2) {
            // 对每个步长进行插入排序
            for (int i = gap; i < n; i++) {
                int temp = arr[i];
                int j = i;
                // 在当前步长下,将元素插入到正确的位置
                while (j >= gap && arr[j - gap] > temp) {
                    arr[j] = arr[j - gap];
                    j -= gap;
                }
                arr[j] = temp;
            }
        }
    }
}

no06快速排序

完整代码

public class no06快速排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        quickSort(arr, 0, arr.length - 1);

        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            // 将数组划分为两部分,获取中间位置pivot
            int pivot = partition(arr, low, high);

            // 分别对左右部分进行递归快速排序
            quickSort(arr, low, pivot - 1);
            quickSort(arr, pivot + 1, high);
        }
    }

    public static int partition(int[] arr, int low, int high) {
        // 选择最右边的元素作为基准值
        int pivot = arr[high];
        int i = low - 1;

        for (int j = low; j < high; j++) {
            if (arr[j] < pivot) {
                i++;

                // 交换arr[i]和arr[j]
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }

        // 将基准元素放到正确的位置
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;

        return i + 1;
    }

}

no07堆排序

完整代码

public class no07堆排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        heapSort(arr);

        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void heapSort(int[] arr) {
        int n = arr.length;

        // 构建最大堆
        for (int i = n / 2 - 1; i >= 0; i--) {
            heapify(arr, n, i);
        }

        // 逐个将最大元素移到数组末尾并调整堆
        for (int i = n - 1; i > 0; i--) {
            // 将堆顶元素(最大值)与当前未排序区域的末尾元素交换
            int temp = arr[0];
            arr[0] = arr[i];
            arr[i] = temp;

            // 在剩余未排序的区域构建最大堆
            heapify(arr, i, 0);
        }
    }

    public static void heapify(int[] arr, int n, int i) {
        int largest = i; // 初始化父节点为最大节点
        int left = 2 * i + 1; // 左子节点索引
        int right = 2 * i + 2; // 右子节点索引

        // 如果左子节点大于父节点,标记左子节点为最大节点
        if (left < n && arr[left] > arr[largest]) {
            largest = left;
        }

        // 如果右子节点大于父节点,标记右子节点为最大节点
        if (right < n && arr[right] > arr[largest]) {
            largest = right;
        }

        // 如果最大节点不是父节点,则交换父节点和最大节点,并递归调整堆
        if (largest != i) {
            int temp = arr[i];
            arr[i] = arr[largest];
            arr[largest] = temp;

            heapify(arr, n, largest);
        }
    }

}

no08基数排序

完整代码

public class no08基数排序 {
    public static void main(String[] args) {
        int[] arr = new int[] { 11, 2, 33, 24, 15 };
        radixSort(arr);

        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }

    public static void radixSort(int[] arr) {
        int max = getMaxValue(arr);

        // 对每个位数进行计数排序
        for (int exp = 1; max / exp > 0; exp *= 10) {
            countingSort(arr, exp);
        }
    }

    public static void countingSort(int[] arr, int exp) {
        int n = arr.length;
        int[] output = new int[n];
        int[] count = new int[10];

        // 统计每个数字的出现次数
        for (int i = 0; i < n; i++) {
            int digit = (arr[i] / exp) % 10;
            count[digit]++;
        }

        // 计算累加次数,确定排序后的位置
        for (int i = 1; i < 10; i++) {
            count[i] += count[i - 1];
        }

        // 从后向前遍历原数组,并将元素放入正确的位置
        for (int i = n - 1; i >= 0; i--) {
            int digit = (arr[i] / exp) % 10;
            output[count[digit] - 1] = arr[i];
            count[digit]--;
        }

        // 将排序好的数组拷贝回原数组
        for (int i = 0; i < n; i++) {
            arr[i] = output[i];
        }
    }

    public static int getMaxValue(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }
}
最后修改:2023 年 11 月 30 日
觉得文章有用,可以赞赏请我喝瓶冰露