两种方法编写程序,设计一个 findmin 函数,该函数能寻找数组中的最小元素, 将该元素的下标通过参数返回,函数返回值为其地址值。考虑整型、小数等不同 类型的数组。
时间: 2024-01-24 21:17:38 浏览: 104
Python算法题源代码-LeetCode(力扣)-寻找旋转排序数组中的最小值
方法一:使用模板函数
```cpp
template <typename T>
T* findmin(T arr[], int size, int& index) {
if (size <= 0) return nullptr;
T* min_ptr = &arr[0];
index = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < *min_ptr) {
min_ptr = &arr[i];
index = i;
}
}
return min_ptr;
}
```
使用示例:
```cpp
int main() {
int int_arr[] = {5, 3, 1, 4, 2};
int int_index;
int* int_min = findmin(int_arr, 5, int_index);
cout << "最小值:" << *int_min << ",下标:" << int_index << endl;
double double_arr[] = {3.5, 1.2, 4.7, 2.1, 5.0};
int double_index;
double* double_min = findmin(double_arr, 5, double_index);
cout << "最小值:" << *double_min << ",下标:" << double_index << endl;
return 0;
}
```
方法二:使用函数重载
```cpp
int* findmin(int arr[], int size, int& index) {
if (size <= 0) return nullptr;
int* min_ptr = &arr[0];
index = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < *min_ptr) {
min_ptr = &arr[i];
index = i;
}
}
return min_ptr;
}
double* findmin(double arr[], int size, int& index) {
if (size <= 0) return nullptr;
double* min_ptr = &arr[0];
index = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < *min_ptr) {
min_ptr = &arr[i];
index = i;
}
}
return min_ptr;
}
```
使用示例与方法一相同。
阅读全文