#include <stdio.h>
int findSecondLargest(int arr[], int size) {
int max ;
int secondLargest ;// 初始化最大值和第二大值
max = arr[0];
secondLargest = 1<<31;
printf("max = %d, secondLargest = %d\n", max, secondLargest);
for(int i=1;i<size;i++){
if(arr[i]>max){// 如果当前值大于最大值,则更新最大值和第二大值
secondLargest = max;
max = arr[i];
// 如果当前值大于第二大值,并且不等于最大值,则更新第二大值
} else if(arr[i]>secondLargest && arr[i]!=max){
secondLargest = arr[i];
}
}
// 如果第二大值没有更新,则说明数组中不存在第二大值
if(secondLargest == 1<<31) {
secondLargest = max;
}
return secondLargest;
}
int main() {
int arr[] = {3, 1, 5, 7, 4, 9, 8};
int size = sizeof(arr) / sizeof(arr[0]);
int result = findSecondLargest(arr, size);
printf("Second largest element is: %d\n", result); // 输出 8
return 0;
}
求数组的次最值
于 2024-06-15 22:06:16 首次发布