二分查找失败 元素插入
if(low>high){
for (i=n-1;i>high;i--) A[i+1]=A[i];
A[i+1=x];
A[i+1]=A[i];
是在 for
循环内部执行的,因此它属于 for
循环的循环体。而 A[i+1=x];
则位于 for
循环之外,因此是在 for
循环执行完毕后执行的。这两个语句不是分开的,而是在不同的位置。
if(low>high)
是判断条件,如果条件成立,表示要执行插入操作。- 如果满足条件,进入
for
循环。 for
循环从n-1
处开始向数组的高端遍历,直到high
位置(不包括high
位置)。- 在
for
循环内部,A[i+1]=A[i];
将数组中的元素依次向后移动一位。 - 循环结束后,执行
A[i+1=x];
将x
插入到high
位置后的位置,完成插入操作。
for
循环结束后,i
的值实际上是 high
的位置,而不是 high
的后一个位置。因为 for
循环的终止条件是 i > high
,所以循环结束时,i
的值是 high
。而 A[i+1=x];
中的 i+1
就是插入到 high
后面的位置。所以,i
指向了 high
。
在许多编程语言中,包括 C、C++、Java 等,循环变量(比如 i
)在 for
循环结束后仍然存在,并且其作用范围延伸到循环结束后的代码块。这种情况下,i
的值会保留为循环结束时的值。
因此,在你的代码片段中,for
循环结束后,i
仍然存在,并且其值是循环结束时的值,即 high
的前一个位置。
如果你不希望 i
在循环结束后继续存在,你可以在 for
循环中声明 i
,这样 i
的作用范围就会被限制在 for
循环内部。例如:
for (int i = n - 1; i > high; i--) {
A[i + 1] = A[i];
}
这样做可以确保在 for
循环结束后,i
将不再可用。
原文地址:https://blog.csdn.net/2301_79629384/article/details/136804874
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!