3 回答

TA贡献1828条经验 获得超3个赞
不同之处在于'insertionList' 在while 循环中被修改。当您将 temp 变量设置为 'insertionList[i]' 时,temp 的值在整个 while 循环中保持不变。

TA贡献1830条经验 获得超9个赞
while(j >= 0 && insertionList[j] > insertionList[i]) {
insertionList[j + 1] = insertionList[j];
j--;
}
错误在这里。插入列表[j + 1] = 插入列表[j]
在第一次执行时,j + 1 = i,它会改变insertList[i]的值
它会影响你的病情。
insertionList[j] > insertionList[i]
所以应该改为临时变量。

TA贡献1829条经验 获得超6个赞
while(j >= 0 && insertionList[j] > insertionList[i])
在这一行中,您正在与循环insertionList
中的迭代中的第 i 个元素进行比较,此代码可能会更改所持有的值。但是当您使用变量时,对于整个迭代,此处的比较值不会改变。这就是为什么你得到不同的输出。while
insertionList[j + 1] = insertionList[j];
insertionList[i]
temp
insertionList[j] > temp
添加回答
举报