#include<bits/stdc++.h> using namespace std; //为什么样例第三大的是4,3 2 5 5 1 4 中第三大的不是3吗(•_•)? const int N=52000; int n,a[N],x,sum; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=n;i>1;i--) for(int j=1;j<i;j++){ if(a[j]<a[j+1]) x=a[j],a[j]=a[j+1],a[j+1]=x; } printf("%d",a[3]); return 0; }vei she me hai shi shi jian chao xian
### ⏰时间超限原因 虽然你已经将排序逻辑调整为降序排序,但代码仍然时间超限,主要原因还是在于使用了冒泡排序算法。冒泡排序的时间复杂度是 $O(n^2)$,在本题数据规模下($3\leq n\leq50000$),当 $n$ 取较大值时,$n^2$ 带来的计算量会非常大,导致程序运行时间过长。 ### 💡解决方案 可以使用 C++ 标准库中的 `std::sort` 函数,它采用的是优化后的排序算法,平均时间复杂度为 $O(n log n)$,相比冒泡排序能显著提高效率。 ### 📝优化后的代码 ```cpp #include <cstdio> #include <algorithm> const int N = 52000; int n, a[N]; int main() { // 读取整数 n scanf("%d", &n); // 读取 n 个整数到数组 a 中 for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } // 使用标准库函数 std::sort 对数组 a 进行降序排序 std::sort(a, a + n, std::greater<int>()); // 输出第三大的数 printf("%d", a[2]); return 0; } ``` ### 🔍代码解释 1. **头文件**:引入 `<cstdio>` 用于输入输出操作,引入 `<algorithm>` 以使用 `std::sort` 函数。 2. **数组读取**:通过 `scanf` 读取整数 `n` 和 `n` 个整数到数组 `a` 中。这里数组下标从 0 开始,符合 C 语言数组使用习惯。 3. **排序操作**:使用 `std::sort` 函数并传入 `std::greater<int>()` 作为比较函数,将数组按降序排列。 4. **输出结果**:由于数组已降序排列,`a[2]` 即为第三大的数,使用 `printf` 输出该结果。 ### <bt>解决排序时间超限问题:找出数组中第三大的数<bt> ######[AI问答 | 505点数解答 | 2026-08-04 22:56:50]
- #include<bits/stdc++.h> using namespace std; //为什么样例第三大的是4,3 2 5 5 1 4 中第三大的不是3吗(•_•)? const int N=52000; int n,a[N],x,sum; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=n;i>1;i--) for(int j=1;j<i;j++){ if(a[j]<a[j+1]) x=a[j],a[j]=a[j+1],a[j+1]=x; } printf("%d",a[3]); return 0; }vei she me hai shi shi jian chao xian(字节豆包 | 505点数解答 | 2026-08-04 22:56:50)5
- C语言代码:实现学生信息录入功能函数的解析(GPT | 5点数解答 | 2024-07-02 08:40:40)357
- 代码优化:改进回文数与质数判断函数及代码风格(字节豆包 | 298点数解答 | 2025-01-25 21:27:32)347
- C++ 代码:根据输入 n 输出 n×n 矩阵与右对齐数字直角三角形(字节豆包 | 590点数解答 | 2025-11-23 19:18:16)87
- 揭秘高效快速排序:从代码实现到原理剖析(讯飞星火 | 710点数解答 | 2024-11-14 10:44:25)412
- 快速掌握 C++ 快速排序:含代码详解与实现(阿里通义 | 951点数解答 | 2024-11-14 10:46:29)385
- 快速排序代码大揭秘:从随机数组生成到高效排序实现(字节豆包 | 472点数解答 | 2024-11-14 10:51:44)372
- 二叉树操作:顺序创建与三种遍历的完整 C 语言实现及菜单交互(GPT | 132点数解答 | 2024-11-13 09:28:34)283
- 优化代码解决超时问题:计算数组 f(l, r) 最小和(字节豆包 | 821点数解答 | 2026-05-10 16:15:59)38
- 优化代码解决超时问题:计算所有 f(l, r) 的和(字节豆包 | 767点数解答 | 2026-05-10 16:17:49)70
- C++代码:随机数组生成与堆排序待实现揭秘(字节豆包 | 417点数解答 | 2024-11-28 11:20:23)430
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)153