java 计算时间复杂度和Big-O符号[副本]

tag5nh1u  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(102)
    • 此问题在此处已有答案**:

Big O, how do you calculate/approximate it?(24个答案)
昨天关门了。
下面代码的时间复杂度是多少,用Big-O表示,计算的步骤是什么?

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("C:\\Users\\yousu\\OneDrive\\سطح المكتب\\textfile\\OptimizeBusInput.txt");
        Scanner scan = new Scanner(file);
        while(true) {
            int n = 0;
            int d = 0;
              int r = 0;
              int outcome = 0;
            
            n = scan.nextInt();
            d = scan.nextInt();
            r = scan.nextInt();

            if ( n + d + r == 0) break;

            int[] morning = new int[n];
            int[] afternoon = new int[n];

            for (int i = 0; i < n; i++) {
                morning[i] = scan.nextInt();
            }
            for (int i = 0; i < n; i++) {
                afternoon[i] = -scan.nextInt();
            }
            Arrays.sort(morning);
            Arrays.sort(afternoon);

            for (int i = 0; i < n; i++) {
                int sum = morning[i] + (-afternoon[i]) - d;
                if (sum > 0) outcome += sum * r;
            }
            System.out.printf("%d\n", outcome);
        }

我试过分别计算每个循环和if语句的时间复杂度,但我不确定如何将它们结合起来得到最终结果。我的代码遵循了Transform & Conquer技术。

vwkv1x7d

vwkv1x7d1#

忽略while (true)循环和用户输入,只分析没有用户交互的部分,我们有两个sort-操作在大小为n的数组上(已知为O(n * log(n))),一个循环迭代n次(即O(n))。

相关问题