【发布时间】:2019-08-16 10:15:16
【问题描述】:
我想在 C 中找到给定数组中最大元素的索引。
我尝试了插入排序算法来确定数组中的最大值,然后我将最大值与我之前所有数组的元素进行了比较,但它不起作用。
void insertion_array(float array[], int n) //* insertion algorithm*//
{
int i = 1, j;
float x;
for (; i < n; i++) {
x = array[i];
j = i - 1;
while ((j >= 0) && (array[j] > x)) {
array[j + 1] = array[j];
j = j - 1;
}
array[j + 1] = x;
}
}
uint8_t Largest_Number_Finder(float arr[], uint8_t n) {
uint8_t index;
insertion_array(arr, n);
for (int i = 0; i < n; i++) {
if (arr[i] > arr[n - 1]) {
index = i;
}
}
return index;
}
我希望采用最大数字索引,但算法总是给出最后一个元素的索引。我应该怎么做才能使它正确? 编辑=您作为重复导航的内容是找到最大的元素。我的目标是找到数组中最大元素的索引。
【问题讨论】:
-
不需要排序。首先假设第一个元素(索引 0)是最大的。然后循环遍历所有元素,如果有大于当前最大元素的元素,保存其索引,继续循环。
-
我明白了谢谢@Someprogrammerdude
-
有一些修改它应该有助于@Renat
-
除其他问题外,您的代码似乎永远不会为
index分配值,因此可能会以未初始化的方式返回,即 UB