c语言实现用顺序表找出最大值和最小值
时间: 2024-10-28 09:12:28 浏览: 18
分治算法找最大最小值和k值.doc
在C语言中,使用顺序表(数组或动态分配的一维结构体数组)来找到最大值和最小值的基本步骤如下:
1. **初始化**:首先需要创建并初始化顺序表。如果是一个动态数组,你需要分配内存并填充数据。
```c
int *array = malloc(n * sizeof(int)); // 假设n是数组长度
for (int i = 0; i < n; i++) {
array[i] = ...; // 初始化元素
}
```
2. **查找初始值**:将第一个元素作为当前的最大值(max)和最小值(min),假设它们都等于数组的第一个元素。
```c
int max = array[0];
int min = array[0];
```
3. **遍历数组**:从第二个元素开始遍历顺序表,更新最大值和最小值。
```c
for (int i = 1; i < n; i++) {
if (array[i] > max) { // 如果当前元素大于已知的最大值
max = array[i]; // 更新最大值
}
if (array[i] < min) { // 如果当前元素小于已知的最小值
min = array[i]; // 更新最小值
}
}
```
4. **返回结果**:遍历结束后,`max` 和 `min` 就分别存储了数组的最大值和最小值。
完整的函数示例:
```c
#include <stdlib.h>
void findMinMax(int *array, int n, int *max, int *min) {
*max = array[0];
*min = array[0];
for (int i = 1; i < n; i++) {
if (array[i] > *max)
*max = array[i];
else if (array[i] < *min)
*min = array[i];
}
}
// 使用示例
int main() {
int size = 5;
int *data = malloc(size * sizeof(int));
data[0] = 5;
data[1] = 2;
data[2] = 8;
data[3] = 1;
data[4] = 9;
int max_val, min_val;
findMinMax(data, size, &max_val, &min_val);
printf("Max value: %d, Min value: %d\n", max_val, min_val);
free(data); // 别忘了释放内存
return 0;
}
```
阅读全文