c - 我对数组索引感到困惑

标签 c arrays

以下选择排序代码在 a[p]>a[j] 行中产生问题,为什么?尽管如果我将 a[i] 而不是 a[p] 放在它工作正常

for (i=0; i<n; i++){
    p=i;
    for (j=i+1; j<n; j++) {
        if(a[p] > a[j]) {          
            p=j;  
            t=a[i];
            a[i]=a[p];
            a[p]=t;
        }
    }
}

最佳答案

线路p=j;在内循环中发生变化p 。这会导致pi 不同稍后,当 if(a[p]>a[j])用新的 j 进行评估.

您的代码不需要p根本不。测试可以仅仅是if (a[i] > a[j]) ,循环内的代码可以是:

t = a[i];
a[i] = a[j];
a[j] = t;

看看你的代码,你似乎认为你需要记录 ijp暂时然后使用p 。那是没有必要的。使用 i 的值或j ,只需使用 ij .

关于c - 我对数组索引感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032925/

相关文章:

c - 指针操作

c - 双重编译 C 代码以减少执行时间

c++ - 从命令行开始?

c - C 中的 VOID 数据类型

javascript - JS 为什么整型变量被重置为初始值,而数组变量却没有?

java - 从字符串数组创建 Android 位置

java - 如何在 Java 中确定 wordList 是否包含短语的子字符串之一

c - (rho/theta) 参数化中定义的两条线的交点

arrays - 从数组中生成坐标

Python NumPy : replace values in one array with corresponding values in another array