|
|
1
29
你可以做的是取数组的前2个元素(假设数组至少有2个元素),比较它们,将较小的元素分配给
|
|
|
2
15
最简单的解决办法是
|
|
|
3
7
您需要进行第二次测试:
|
|
4
2
您的原始代码是好的,您只需初始化max和second\u max变量。使用数组中的前两个元素。 |
|
|
5
2
给你:
|
|
|
6
1
Quickselect 就是这条路。伪代码在该链接中可用,因此我将解释整个算法:
遵循此算法,每次始终选择元素0作为轴:
|
|
|
7
1
第一步,决定前两个数字。
测试排序输入(升序和降序),随机输入,输入有重复,工作良好。
|
|
|
8
1
解决这个问题的另一种方法是使用元素之间的比较。比如说,
这样做的好处是,您可以在两次比较中消除两个数字。
|
|
|
9
1
检查此解决方案。
|
|
|
10
0
这里有些东西可能有用,
|
|
|
11
0
上界应该是n+log2n2,但在随机选择算法中它比O(n)大,但在最坏的情况下它要小得多。解决办法可能是
|
|
|
12
0
我们不能按降序排序,从排序后的数组中取第二个元素吗? |
|
|
13
0
下面的怎么样。 make_heap是O(n),所以这是有效的,这是1-pass
|
|
|
14
0
|
|
|
15
0
|
|
16
-1
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |