C++实现最小值前置的数组重排算法
根据题目描述,我们需要将数组中的最小值放到 `a[1]` 位置,其余数字保持原顺序(即除了最小值被移到第一个位置,其他元素按原相对顺序依次排列)。样例中 `4 3 5 2 6` 的最小值是 `2`,将其移到首位后,其余元素 `4 3 5 6` 保持原序,所以输出 `2 4 5 3 6`。 ## 🧠 解题思路 题目要求使用一种“方法”(可能是冒泡排序或其他),但本质上只需要: 1. **找到最小值**及其下标。 2. **将最小值与第一个元素交换**(或者取出最小值插入到最前面,其余元素右移一位)。 3. **输出整个数组**。 ## 💻 C++ 实现(推荐) ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } // 找到最小值和它的下标 int min_val = a[0]; int min_idx = 0; for (int i = 1; i < n; i++) { if (a[i] < min_val) { min_val = a[i]; min_idx = i; } } // 将最小值放到 a[0](相当于 a[1]),其余元素保持原序后移 // 方法:将最小值前的所有元素向右移一位,然后把最小值放到开头 // 注意:这里下标从0开始,对应题目中的a[1]到a[n] for (int i = min_idx; i > 0; i--) { a[i] = a[i - 1]; } a[0] = min_val; // 输出结果 for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; } ``` ## 📌 代码解释 - **输入处理**:使用 `vector<int>` 动态存储数组,避免固定大小限制。 - **查找最小值**:遍历一次,记录最小值和对应下标。 - **移位操作**:从最小值所在位置开始,将其前面的每个元素向后移动一位,最终将最小值放在 `a[0]`。 - **时间复杂度**:O(n),只需两次遍历(查找最小值 + 移位)。 - **空间复杂度**:O(1),仅使用常数额外空间。 ## 🧪 测试样例 输入: ``` 5 4 3 5 2 6 ``` 输出: ``` 2 4 5 3 6 ``` 与题目样例一致。 ## ⚠️ 注意事项 - 下标从0开始,但题目描述下标从1开始,需注意转换。 - 如果存在多个相同的最小值,取**第一个**最小值即可,通常不影响结果。 - 本方法无需排序,只做一次“移动”,效率高。 ## 📚 扩展思考 如果题目要求更复杂的操作(例如将最小值放到第一个,其余数字按升序排列),则需要使用排序算法(如快速排序、冒泡排序等)。但本题仅要求移位,因此上述解法最优。 ######[AI写代码神器 | 735点数解答 | 2026-08-21 19:16:50]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)563
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)97
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)477
- C++ 实现:合并 k 个有序数组并求所有数的中位数(附代码及复杂度分析) (阿里通义 | 203点数解答 | 2023-11-09 00:50:21)283
- 2023 - 2024 年中国制造业与非制造业 PMI 数据深度剖析:为政策与决策提供参考 (讯飞星火 | 54点数解答 | 2024-12-17 09:25:02)183
- 深挖2023 - 2024年中国制造业与非制造业PMI数据:多元统计剖析经济运行特点 (讯飞星火 | 235点数解答 | 2024-12-17 09:25:13)160
- Python 实现:输入三个数并输出最大、最小及平均值,附异常处理要点(字节豆包 | 210点数解答 | 2025-01-25 12:23:39)246
- 地下水及地基土腐蚀性分析:从代码优化到逻辑完善的全面攻略(DeepSeek | 498点数解答 | 2025-06-08 21:49:49)276
- 使用 C++ 找出全息偶像总决选人气最稳定的偶像(字节豆包 | 502点数解答 | 2026-03-08 10:20:28)56
- 礼盒多级排序:总价→最贵→最便宜→编号的 Python 实现与详解(阿里通义 | 1000点数解答 | 2026-03-16 12:13:21)103
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)400
- 揭秘iOS开发:常用算法大集合,提升应用性能与体验!(阿里通义 | 246点数解答 | 2023-11-08 00:43:08)358