查找数组中最大值或者最小值,移到数组首位,用c++
时间: 2024-09-19 12:15:18 浏览: 39
在C++中查找数组中最大值或最小值并将其移动到数组首位可以使用两步操作:
1. **找到最大值/最小值**:
- 对于寻找最大值,你可以遍历整个数组,同时维护一个变量记录当前的最大值及其索引。每次遇到更大的元素时更新这个变量。
- 对于寻找最小值,同样遍历数组,但是这次比较的是每个元素与已知最小值的大小。
```cpp
int findMaxMin(int arr[], int n, bool isMax) {
int maxMin = arr[0]; // 初始化为第一个元素
int index = 0;
for (int i = 1; i < n; i++) {
if (isMax ? arr[i] > maxMin : arr[i] < maxMin) { // 根据isMax选择比较操作
maxMin = arr[i];
index = i;
}
}
return index;
}
```
2. **将最大值/最小值移到首位**:
- 找到最大值/最小值的索引后,你可以通过交换数组的第一个元素和该索引处的元素来实现。
```cpp
void moveToFirst(int& arr[], int index, int n) {
if (index != 0) {
std::swap(arr[0], arr[index]); // 交换arr[0]和arr[index]
}
}
```
最后,结合这两个函数,你可以这样调用它们:
```cpp
int main() {
int arr[] = {5, 3, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int maxIndex = findMaxMin(arr, n, true); // 如果需要最大值,设置true;否则设置false
moveToFirst(arr, maxIndex, n);
// 现在数组的第一个元素就是最大值或最小值
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
阅读全文