![](/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.