#P0325. 【选择题】最好最坏时间复杂度习题

【选择题】最好最坏时间复杂度习题

最好时间复杂度

1.1. 观察下面的代码,请问它的最好时间复杂度是多少?

int func(int n,int m){
    for(int i = min(n,m) ; i >= 1 ; i--){
        if(n % i == 0 && m % i == 0)
            return i;
    }
    return - 1;
}

{{ select(1) }}

  • O(nm)O(nm)
  • O(n)O(n)
  • O(n2)O(n ^ 2)
  • O(1)O(1)

2.2. 观察下面的代码,请问它的最好时间复杂度是多少?

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        bool flag = true;
        for (int j = 0; j < n – i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                flag = false;
                swap(arr[j], arr[j + 1]);
            }
        }
        if(flag)break;
    }
}

{{ select(2) }}

  • O(1)O(1)
  • O(n2)O(n^2)
  • O(n)O(n)
  • O(logn)O(logn)

最坏时间复杂度

1.1. 观察下面的代码,请问它的最坏时间复杂度是多少?

int func(int n,int m){
    if(n < m)swap(n,m);//保证n大于m
    for(int i = n ; i >= 1 ; i--){
        if(n % i == 0 && m % i == 0)
            return i;
    }
    return - 1;
}

{{ select(3) }}

  • O(1)O(1)
  • O(n2)O(n^2)
  • O(n)O(n)
  • O(logn)O(logn)

2.2. 观察下面的代码,请问它的最坏时间复杂度是多少?

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n – i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(arr[j], arr[j + 1]);
            }
        }
    }
}

{{ select(4) }}

  • O(1)O(1)
  • O(n2)O(n^2)
  • O(n)O(n)
  • O(logn)O(logn)