📌  相关文章
📜  查询以查找给定数组中具有最小值 X 的最小索引(1)

📅  最后修改于: 2023-12-03 15:10:47.690000             🧑  作者: Mango

查询给定数组中具有最小值 X 的最小索引

如果你需要在一个数组中查询具有最小值 X 的最小索引,可以使用以下代码片段。该代码通过遍历数组,记录当前最小值和它的索引值,如果遇到值为 X 的元素,它的索引将与当前的最小索引进行比较,如果比当前的最小索引更小,则更新最小索引值。最终返回最小索引,即具有最小值 X 的最小索引。

int findMinIndex(int arr[], int size, int X) {
    int minIndex = size; // 初始化最小索引为数组长度
    int minValue = INT_MAX; // 初始化最小值为 int 类型最大值

    for (int i = 0; i < size; i++) {
        // 如果当前值小于最小值,则更新最小值和最小索引
        if (arr[i] < minValue) {
            minIndex = i;
            minValue = arr[i];
        }
        // 如果当前值等于 X 且索引小于最小索引,更新最小索引
        if (arr[i] == X && i < minIndex) {
            minIndex = i;
        }
    }

    // 如果最小索引值不等于数组长度,说明存在最小值 X,返回最小索引值
    if (minIndex != size) {
        return minIndex;
    }

    // 如果最小索引值等于数组长度,说明数组中不存在值为 X 的元素,返回 -1
    return -1;
}

需要注意的是,如果最小索引值等于数组长度,说明数组中不存在值为 X 的元素,此时返回 -1。如果你需要查询具有最小值的所有索引,可以在找到第一个最小索引后,继续遍历数组,将所有值为最小值的索引加入一个数组中,最终返回该数组。