![](/img/trans.png)
[英]Why does my cacluator repeat the same output when I use a decimal value?
[英]Why does my algorthim for insertion sort return different values , when I use the same value in condition statement?
# 在第一種情況下,我將臨時變量放入 while 循環中的條件語句#
int tab[8]={0,1,7,8,7,6,5,2};
int n=8;
int j;
int temp;
for(int i=1;i<n;i++)
{
temp=tab[i];
j=i-1;
while(j>=0&&tab[j]>temp)
{
tab[j+1]=tab[j];
--j;
}
tab[j+1] = temp;
}
我得到的結果是:
0 1 7 8 7 6 5 2
0 1 2 5 6 7 7 8
但另一方面,當我在 while 循環中的條件語句中使用 tab[i] 時
for(int i=1;i<n;i++)
{
temp=tab[i];
j=i-1;
while(j>=0&&tab[j]>tab[i])
{
tab[j+1]=tab[j];
--j;
}
tab[j+1] = temp;
}
我得到這個結果:
0 1 7 8 7 6 5 2
0 1 7 7 6 5 2 8
而且我找不到傳遞這些值與為什么它的行為如此之間的任何區別。 我認為我正在使用相同的值。 這是我在該頁面上的第一個問題,請善待我,祝你有美好的一天
因為在while
循環的第一次迭代中 if tab[j] > tab[i]
tab[j+1]=tab[j];
將tab[i]
更改為tab[i - 1]
,
所以基本上你在第二種情況下的整個程序相當於這個
#include <iostream>
int main ()
{
int tab[8]={0,1,7,8,7,6,5,2};
int n=8;
int j;
int temp;
for(int i=1;i<n;i++)
{
temp=tab[i];
j=i-1;
if (tab[j]>tab[i])
{
tab[j+1]=tab[j];
--j;
}
tab[j+1] = temp;
}
for(auto&& a: tab) {
std::cout << a << " ";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.