📅  最后修改于: 2023-12-03 15:00:12.560000             🧑  作者: Mango
本题目要求程序员实现一个函数,该函数接受两个参数:一个整数数组和数组的长度,然后返回该数组中的第二小的元素。
int find_second_minimum(int arr[], int len);
arr[]
:一个整数数组len
:数组的长度该函数应返回数组中第二小的元素,如果找不到,则返回-1。
int find_second_minimum(int arr[], int len)
{
int i;
int min, secondMin;
if (len < 2) {
return -1; // 如果数组长度小于2,则无法找到第二小的元素
}
min = arr[0]; // 先将第一个元素默认为最小值
secondMin = arr[1]; // 将第二个元素默认为第二小的元素
if (secondMin < min) { // 如果第二小的元素小于最小值则交换两者的值
int temp = min;
min = secondMin;
secondMin = temp;
}
// 从数组的第三个元素开始遍历
for (i = 2; i < len; i++) {
if (arr[i] < min) { // 如果该元素小于最小值,则将该元素作为最小值并将secondMin的值更新为原min的值
secondMin = min;
min = arr[i];
} else if (arr[i] < secondMin) { // 如果该元素大于最小值,但小于secondMin,则将该元素作为secondMin的值
secondMin = arr[i];
}
}
if (secondMin == min) { // 如果数组中只有一个元素,则无法找到第二小的元素
return -1;
}
return secondMin;
}
#include <stdio.h>
int main()
{
int arr[] = {3, 6, 2, 8, 10};
int len = sizeof(arr) / sizeof(arr[0]);
int secondMin = find_second_minimum(arr, len);
printf("数组中第二小的元素为:%d\n", secondMin);
return 0;
}
本题的解法比较简单,可以采用遍历数组的方式来找出第二小的元素。具体思路如下: