使用指针找到数组中绝对值最小值和绝对值最大值位置
时间: 2024-10-13 12:16:48 浏览: 29
程序员面试金典 – 面试题 16.06. 最小差(排序+双指针)
在C++等语言中,可以使用指针来遍历数组并查找绝对值最小值和最大值的位置。以下是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
// 函数声明,返回值分别为最小值、最大值以及它们的索引
void findMinMax(int* arr, int size, int& min_val, int& min_index, int& max_val, int& max_index);
int main() {
int arr[] = {5, -10, 3, -8, 2, 6};
int min_val, min_index, max_val, max_index;
int array_size = sizeof(arr) / sizeof(arr[0]);
// 调用函数,传入数组、大小及结果变量的引用
findMinMax(arr, array_size, min_val, min_index, max_val, max_index);
cout << "最小值(" << min_val << ")的位置: " << min_index << endl;
cout << "最大值(" << max_val << ")的位置: " << max_index << endl;
return 0;
}
// 实现findMinMax函数
void findMinMax(int* arr, int size, int& min_val, int& min_index, int& max_val, int& max_index) {
min_val = max_val = arr[0];
min_index = max_index = 0; // 初始化最小值和最大值的索引为0
for (int i = 1; i < size; ++i) {
if (abs(arr[i]) < abs(min_val)) { // 比较当前元素的绝对值与当前最小值
min_val = arr[i];
min_index = i;
} else if (abs(arr[i]) > abs(max_val)) { // 比较当前元素的绝对值与当前最大值
max_val = arr[i];
max_index = i;
}
}
}
```
在这个例子中,我们首先初始化`min_val`和`max_val`为数组的第一个元素,然后通过遍历数组,每次比较当前元素的绝对值与当前的最小值和最大值,如果当前元素的绝对值更小,则更新最小值和其索引;如果更大,则更新最大值和其索引。
阅读全文