如何改进我的算法来检测对应于相同分数的数组元素?

时间:2014-11-18 18:46:10

标签: c arrays algorithm sorting duplicates

这是我用来比较两个分数的算法。 uper是所有分子的数组,under是所有分母的数组,因此其中一个分数为uper[i]/under[j]。我想打印所有具有相同分数的位置。它们已经是标准形式

你能想到更好的方法吗?

 for(i = 0; i < (length-1); i++)
    for(j = i + 1; j < length; j++)
        if(uper[i] == uper[j]
          if (under[i] == under[j])
            printf("%d %d\n", i, j);

2 个答案:

答案 0 :(得分:1)

根据您的算法,相同的分数可以视为不同。 要比较a/bc/d这两个分数是否相等,请检查if(a*d==b*c)

所以你的代码必须看起来像

for(i = 0; i < (length-1); i++)
for(j = i + 1; j < length; j++)
    if(uper[i]*under[j] == uper[j]*under[i])
        printf("%d %d\n", i, j);

答案 1 :(得分:0)

相同分数或相同的等效分数? 3/4相当于6/8。你想比较这种事吗?

如果是这样,您可以使用:

if(upper[i]*under[j] == upper[j]*under[i]) {
    printf("%d %d\n", i, j);
}

如果没有,我认为您的解决方案是最佳方式。