2301_76816428 2023-03-03 22:29 采纳率: 57.1%
浏览 20
已结题

算法课题目,来问问大家

请问如何设置程序运行1s,看看在不同的时间复杂度上能操作多少N

  • 写回答

1条回答 默认 最新

  • bingbingyihao 2023-03-03 23:03
    关注

    回答:直接模拟运行,把程序运行所花费的时间给输出一下,然后从10000开始,对比O(logN)、O(N)、O(N*logN)、O(N^2)、O(n^3)等;这样可以让你产生一个区间范围,大概就可以估计出来一秒钟可以执行多少次指令;
    示例:

    img

    package code;
    
    /**
     * @author bbyh
     * @date 2023/3/3 0003 13:07
     * @description
     */
    public class Test {
        private static final int COUNT = 10000000;
    
        public static void main(String[] args) {
            testN();
            testN2();
        }
    
        private static void testN2() {
            long start = System.currentTimeMillis();
            double k = 0;
            for (int i = 0; i < COUNT; i++) {
                for (int j = 0; j < COUNT; j++) {
                    k = 2 * i + 1;
                }
            }
            long end = System.currentTimeMillis();
            System.out.println(end - start);
    
            System.out.println("k: " + k);
        }
    
        private static void testN() {
            long start = System.currentTimeMillis();
            int k = 0;
            for (int i = 0; i < COUNT; i++) {
                k = 2 * i + 1;
            }
            long end = System.currentTimeMillis();
            System.out.println(end - start);
    
            System.out.println("k: " + k);
        }
    }
    

    但实际会遇到的一个问题就是,编译器会对指令进行优化,所以你需要设计一个较为复杂的计算,这样才可以体现出来算法的差距

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月3日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line