自学内容网 自学内容网

二分查找失败 元素插入

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 循环执行完毕后执行的。这两个语句不是分开的,而是在不同的位置。

  1. if(low>high) 是判断条件,如果条件成立,表示要执行插入操作。
  2. 如果满足条件,进入 for 循环。
  3. for 循环从 n-1 处开始向数组的高端遍历,直到 high 位置(不包括 high 位置)。
  4. for 循环内部,A[i+1]=A[i]; 将数组中的元素依次向后移动一位。
  5. 循环结束后,执行 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)!