gpt4 book ai didi

c++ - 当我在条件语句中使用相同的值时,为什么我的插入排序算法返回不同的值?

转载 作者:行者123 更新时间:2023-12-01 14:58:13 25 4
gpt4 key购买 nike

#首先,我将temp变量放入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循环的第一次迭代中,如果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 << " ";
}
}

关于c++ - 当我在条件语句中使用相同的值时,为什么我的插入排序算法返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com