声明:仅供留档查阅,仅用作起到提示引导性作用,仅用作学习交流,切勿直接照搬
DS作业-2-22网安物联网-20230913
作业Ch1-4: P24-P25 1.选择题
1-5 CD B B A A 6-9 C CE
第九题解析
这段代码的时间复杂度是O(n²)。这是因为外部循环会执行n次,而内部循环会执行2i次,其中i的最大值是n。因此,最坏情况下,内部循环会执行2n次。所以,总的执行次数是n(2n),即O(n²)。这意味着,如果输入大小(即n的值)增加,那么执行时间将按平方增加。这是典型的二次时间复杂度的例子。
作业Ch1-5:
算法编程题,给出代码、测试过程和运行结果:
这个题存疑,算法思路还没看懂
将一个具有 n 个元素的数组A[n]向左循环移动k个位置,要求时间复杂度为O(n),空间复杂度为O(1)。
答案(来自bing ai
这是一个经典的问题,可以通过三次反转数组的方法来解决。首先,我们将数组的前k个元素反转,然后将剩余的元素反转,最后将整个数组反转。这样就可以实现将数组向左循环移动k个位置。以下是具体的C++代码实现:
1 |
|
这段代码首先定义了一个reverse
函数,用于反转数组中从start
到end
的元素。然后定义了一个leftRotate
函数,用于将数组向左循环移动k个位置。在main
函数中,我们创建了一个数组,并调用了leftRotate
函数来进行旋转。最后,我们打印出旋转后的数组。
这个解决方案的时间复杂度为O(n),空间复杂度为O(1),满足了题目的要求。希望这个答案对你有所帮助!
新知识,要使其不大于最大长度可以用取模运算来解决
作业Ch1-6:
算法编程题,给出代码、测试过程和运行结果:
找出整型数组A[n]中的最大值和次最大值。
答案(来自bing ai
以下是一个C++代码片段,它可以找出整型数组A[n]中的最大值和次最大值。这个代码假设数组中至少有两个元素,并且所有元素都是唯一的。
1 |
|
这段代码首先定义了一个findMaxAndSecondMax
函数,用于找出数组中的最大值和次最大值。然后在main
函数中,我们创建了一个数组,并调用了findMaxAndSecondMax
函数来找出最大值和次最大值。希望这个答案对你有所帮助!