【发布时间】:2014-05-22 15:17:04
【问题描述】:
所以,我对这个排序函数有一个问题,我写它来排序结构。
我最初的想法是有一个while 循环,直到没有发生任何变化,并且在里面有一个for 循环,它通过一个array[10],比较彼此相邻的两个元素。如果下一个元素大于前一个元素,则交换它们,并将迭代器抛回零。
一切都有效,除了第一个元素,它不是最高的。从第二个到最后,一切都很好。
任何指针,我在哪里犯了错误?代码对我来说似乎很好......
我知道我可以使用<algorithm>,但我应该为此编写自己的函数。
void izvadaPecRez(Pari masivs[])
{
Pari temp;
bool change;
int i;
while(change!=false)
{
for(i=0;i<10;i++)
{
if(masivs[i+1].kopejais>masivs[i].kopejais)
{
temp=masivs[i];
masivs[i]=masivs[i+1];
masivs[i+1]=temp;
change=true;
i=0;
}
else
{
change=false;
}
}
}
for(i=0;i<10;i++)
printone(masivs, i);
}
【问题讨论】:
-
您是否在硬编码对象的数量?不要。
-
你可以把`while(change!=false)`写成
while(change == true)。这更具可读性。而change没有初始化,所以默认值为false -
@RakibulHasan
while( change ) -
@Rakibul Hasan 未初始化变量的默认值未定义。特别是 Visual Studio 喜欢在 Debug 模式下使用
0xcdcd...cd初始化堆栈变量,这会导致更改为真 -
啊,是的,忘了初始化更改,我在搞乱这个函数,我把它初始化了一部分,我在发布之前删除了,因为它对我没有任何作用。