11.8 求一维数组的最大值及其下标 的很多问题

发布于 13 天前  34 次阅读


很多问题!

第一,找最大值

int max(int in[], int n) {
    int maxs = in[0]; // 假设第一个元素是最大值
    for (int i = 1; i < n; i++) { // 从第二个元素开始遍历
        if (in[i] > maxs) {
            maxs = in[i]; // 更新最大值
        }
    }
    return maxs; // 返回最大值
}

首先,想冒泡排序,错,徒增时耗!

第二,int max 错,和你定义的函数名冲突!


我先用的冒泡排序,出现了严重的问题

int max(int in[999], int n) {
    for (int i = 0; i < n; i++) {
        int maxs = in[i];
        for (int j = i + 1; j < n; j++) {
            if (in[j] > maxs) {
                maxs = j;
            }
        }
        if (in[maxs] != in[i]) {
            int temp = in[i];
            in[i] = in[maxs];
            in[maxs] = temp;
        }
    }
    return in[0];

最后会输出错误,为什么?

不要在内循环里面省事啊,球球了

你为了把比maxs大的 j 保留把maxs直接改成了j的值而不是in[ j ]

但是看看if (in[j] > maxs) 这一步啊啊啊啊

届ける言葉を今は育ててる
最后更新于 2024-11-08