do
{
swap=false;
for(int i=0; i<256; i++)
{
if(pd[i]<pd[i+1])
{
int temp=pd[i];
pd[i]=pd[i+1];
pd[i+1]=temp;
swap=true;
}
}
}
while(swap);
它只返回前两个结果正确,其余为0.我排序浮动。冒泡排序工作不正常
do
{
swap=false;
for(int i=0; i<256; i++)
{
if(pd[i]<pd[i+1])
{
int temp=pd[i];
pd[i]=pd[i+1];
pd[i+1]=temp;
swap=true;
}
}
}
while(swap);
它只返回前两个结果正确,其余为0.我排序浮动。冒泡排序工作不正常
temp
是int
型的,但你的阵列是float
类型的...
是的,我明白了,不过谢谢你的帮助。 – 2012-04-26 14:27:57
你的意思是,你正在使用'<'操作比较浮动点? ..你需要使用epsilon。检查这个 - http://stackoverflow.com/questions/10334688/how-dangerous-is-it-to-compare-floatingpoint-values – 2012-04-26 14:23:19
@SangeethSaravanaraj:你只需要epsilon值进行平等检查时。这是关系型的,所以它不会成为问题。 – Skizz 2012-04-26 14:24:52