有一个长度为n的整数序列,其中最小值和最大值不会出现在序列的第一和最后一个位置。 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
时间: 2024-12-14 09:23:36 浏览: 4
对于这个问题,你可以编写一个程序,采用双指针技术来解决。以下是 Python 语言的一个解决方案:
```python
def swap_min_max(arr):
# 初始化两个指针,一个指向开始(i),一个指向结束(j)
i = 0
j = len(arr) - 1
# 找到最小值和最大值的索引
min_index = i
max_index = i
while i < j:
if arr[i] > arr[j]:
if arr[i] < arr[min_index]:
min_index = i
else:
arr[i], arr[max_index] = arr[max_index], arr[i]
elif arr[j] > arr[min_index]:
min_index = j
i += 1
j -= 1
# 交换整个序列中的最小值和最大值
arr[min_index], arr[j] = arr[j], arr[min_index]
return arr
# 测试示例
arr = [5, 2, 8, 1, 9, 4]
print(swap_min_max(arr)) # 输出: [1, 2, 4, 5, 9, 8]
```
这个程序首先找到最小值和最大值的位置,然后在未确定的区域内交换这两个值,保证它们最终会在序列的一头一尾。最后返回替换后的序列。
阅读全文