算法设计与分析 第一章 算法概述 作业

单选题

2-1
下列哪个函数是O(N)的?(4分)
A. 2NlogN
B. logN​2
C. N(logN)​2
D. N2/2

2-2
给定N×N×N的三维数组A,则在不改变数组的前提下,查找最小元素的时间复杂度是:(4分)

A. O(N​2​​)
B. O(NlogN)
C. O(N​3​​logN)
D. O(N​3)

2-4
下面代码段的时间复杂度是()。(4分)

x=0;
for( i=1; i<n; i++ )
    for ( j=1; j<=n-i; j++ )
        x++;

A. O(n)
B. O(n​2​​)
C. O(n​3​)
D. O(2​n​​)

2-5
下列代码

if ( A > B ) {
    for ( i=0; i<N*N/100; i++ )
        for ( j=N*N; j>i; j-- )
            A += B;
}
else {
    for ( i=0; i<N*2; i++ )
        for ( j=N*3; j>i; j-- )
            A += B;
}

的时间复杂度是:(4分)

A. O(N​3)
B. O(N​4)
C. O(N5​)
D. O(N6)

2-6
下列代码

for(i=0; i<n; i++)
  for(j=i; j>0; j/=2)
     printf(“%d\n”, j);

的时间复杂度是:(4分)

A. O(N×i)
B. O(N)
C. O(N​2)
D. O(NlogN)

扫描二维码关注公众号,回复: 12142238 查看本文章

内循环每次都除以2,只有log2为底,N次;

编程题

7-1 求最大值及其下标 (80分)

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

输入样例:

6
2 8 10 1 9 10

输出样例:

10 2
#include<iostream>
using namespace std;

int main()
{
    
    
	int n;
	cin >> n;
	int A[n];
	for(int i=0; i<n; i++){
    
    
		cin >> A[i];
	}
	int max=A[0];
	int max_key = 0;
	for (int j=1; j<n; j++){
    
    
		if(A[j] > max){
    
    
			max = A[j];
			max_key = j;
		}
	} 
	cout << max << " " << max_key;
}

猜你喜欢

转载自blog.csdn.net/Jessieeeeeee/article/details/111773098