编辑代码



import java.util.Random;

public class MaxSubarraySum {
    public class MaxSubarrayPerformance{

    // 复用之前实现的三种算法
        public static int bruteForce(int[] nums) { /* ... */ }
        public static int divideAndConquer(int[] nums) { /* ... */ }
        public static int dynamicProgramming(int[] nums) { /* ... */ }

        public static void testPerformance() {
        // 定义测试数据规模
            int[] testSizes = {100, 500, 1000, 2000};
            Random random = new Random();

            for (int size : testSizes) {
            // 生成随机测试数组
                int[] nums = new int[size];
                for (int i = 0; i < size; i++) {
                    nums[i] = random.nextInt(201) - 100; // 范围[-100, 100]
            }

                System.out.println("\n测试数据规模: " + size);
            
            // 测试暴力法
                long bruteStart = System.currentTimeMillis();
                bruteForce(nums);
                long bruteTime = System.currentTimeMillis() - bruteStart;
            
            // 测试分治法
                long divideStart = System.currentTimeMillis();
                divideAndConquer(nums);
                long divideTime = System.currentTimeMillis() - divideStart;
            
            // 测试动态规划法
                long dpStart = System.currentTimeMillis();
                dynamicProgramming(nums);
                long dpTime = System.currentTimeMillis() - dpStart;

            // 格式化输出结果
                System.out.printf("暴力法: %-10dms | 分治法: %-10dms | 动态规划法: %dms%n",
                        bruteTime, divideTime, dpTime);
                System.out.println("=".repeat(60));
            }
        }
    }
    public static void main(String[] args) {
        testPerformance();
    }
}