酷代码 AI
菜单

现有 n 个非负整数, ​a​[1], ​a​[2] ... ​a​[​n​],为了使用选择排序将他们从小到大排序并去重后输出,我们需要不断的从这些数中找到最大的,并且与最后一个元素做交换。为了减少交换元素的次数,我们可以记录最大元素的下标,这样每次仅需要一次交换。请同学们完成一次最大值的寻找,并返回对应下标。下标从1开始

```python def find_max_index(arr, n): """ 在数组 arr 的前 n 个元素中寻找最大值的下标。 参数: arr: 非负整数列表 n: 需要考虑的数组长度 返回: 最大值元素的下标(从1开始计数) """ max_idx = 0 # 假设第一个元素最大,下标从0开始(内部计算) for i in range(1, n): if arr[i] > arr[max_idx]: max_idx = i return max_idx + 1 # 转换为从1开始的下标 # 示例用法 if __name__ == "__main__": # 示例数组 a = [3, 1, 4, 1, 5, 9, 2, 6] n = len(a) # 寻找最大值的下标(从1开始) idx = find_max_index(a, n) print(f"最大值 {a[idx-1]} 的下标是: {idx}") ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 数组下标从0开始,但题目要求从1开始,返回前需要转换。 - 当有多个相同最大值时,函数返回第一个遇到的最大值下标。 - 确保n不超过数组实际长度,否则会引发索引错误。 [2026-01-18 10:57:51 | AI写代码神器 | 292点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多