我正在研究一个程序的一部分,它按照几个标准对数组中的帖子进行排序。帖子排序很好,直到程序到达最后一块代码。为什么这些排序标准之一有效,但不是其他排序标准?
的代码块,因为它应该排序的职位:
for (i = 0; i < 11; i++)
for (j = i + 1; j < 12; j++)
if (serie[j].poang == serie[i].poang)
if ((serie[j].gjorda - serie[j].inslappta) < (serie[i].gjorda - serie[i].inslappta))
{
temp.poang = serie[i].poang;
serie[i].poang = serie[j].poang;
serie[j].poang = temp.poang;
temp.gjorda = serie[i].gjorda;
serie[i].gjorda = serie[j].gjorda;
serie[j].gjorda = temp.gjorda;
temp.inslappta = serie[i].inslappta;
serie[i].inslappta = serie[j].inslappta;
serie[j].inslappta = temp.inslappta;
strcpy(temp.namn, serie[i].namn);
strcpy(serie[i].namn, serie[j].namn);
strcpy(serie[j].namn, temp.namn);
}
虽然这一次似乎并没有影响到所有的排序(我甚至尝试在最后扭转了“<”签到“如果“在下面的代码语句,但它不会改变排序可言,导致我相信事情是关闭与整个块):
for (i = 0; i < 11; i++)
for (j = i + 1; j < 12; j++)
if (serie[j].poang == serie[i].poang)
if ((serie[j].gjorda - serie[j].inslappta) < (serie[i].gjorda - serie[i].inslappta))
if(serie[j].gjorda < serie[i].gjorda)
{
temp.poang = serie[i].poang;
serie[i].poang = serie[j].poang;
serie[j].poang = temp.poang;
temp.gjorda = serie[i].gjorda;
serie[i].gjorda = serie[j].gjorda;
serie[j].gjorda = temp.gjorda;
temp.inslappta = serie[i].inslappta;
serie[i].inslappta = serie[j].inslappta;
serie[j].inslappta = temp.inslappta;
strcpy(temp.namn, serie[i].namn);
strcpy(serie[i].namn, serie[j].namn);
strcpy(serie[j].namn, temp.namn);
}
减法类似'serie [j] .gjorda - serie [j] .inslappta'和serie [i] .gjorda - serie [i] .inslappta'是否溢出? – chux
您应该显示结构定义。这可能与'namn'成员的定义有关。如果可能是一个数组(char namn [30];')或一个指针('char * namn;'),或者你可能已经发明并做过其他事情。用指针,你必须担心存储空间;与你没有的数组。你应该看看你是否也可以使用结构分配。 –
交换很复杂。建议'temp = serie [i]; serie [i] = serie [j]; serie [j] = temp;'。 – chux