#426. CSP-J模拟套题1-23

CSP-J模拟套题1-23

  1. (阅读程序)
#include <iostream> 
using namespace std;
int a[10005],d[10005];
int ans;
void merge_sort(int l,int r){
    if(l>=r) return;
    int mid=(l+r)/2;
    int i=l;
    int p=l,q=mid+1;
    merge_sort(l,mid);
    merge_sort(mid+1,r);
    while(p<=mid||q<=r){
        if(q>r||(p<=mid&&a[p]<=a[q])){ //第13行
            b[i]=a[p]; i++; p++;
        } else {
            b[i]=a[q]; i++; q++;
            ans+=mid+1-p;
        }
    }
    for(i=l;i<=r;i++) a[i]=b[i];
}
int main() 
{ 
    int n; ans=0;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    merge_sort(1,n);
    cout<<ans<<endl;
    return 0;
}

(判断题)

将程序第 13 行条件中的 “a[p]<=a[q]” 改为 “a[p]<a[q]”,不会影响最终结果。( )

{{ select(1) }}

(选择题)

(2 分)该程序的时间复杂度为( )

{{ select(2) }}

  • O(log2n)
  • O(n)
  • O(nlog2n)
  • O(n2)

输入:

6

3 1 6 5 2 4

输出( )

{{ select(3) }}

  • 6
  • 7
  • 8
  • 9

输入:

55

1 1 2 1 2 3 1 2 3 4 ... 1 2 3 4 5 6 7 8 9 10

输出( )

{{ select(4) }}

  • 330
  • 335
  • 340
  • 345