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