12~~
for (int i = 0; i < n; i++)
scanf("%d ", &arr[i]);
int x,temp=0;
scanf("%d",&x);
int insertPos = 0;
while (insertPos < n && arr[insertPos] < x) {
insertPos++;
}
// 3. 元素后移:从末尾开始,把 insertPos 及之后的元素向后挪一位
for (int i = n; i > insertPos; i--)
arr[i] = arr[i - 1];
arr[insertPos]=x;
for (int i = 0; i <=n; i++)
printf("%d ",arr[i]);
bug:

原本的 9 被挤到末尾,没完成整体后移)。实际输出 1 6 8 22 30 9 来看,问题确实出在元素没有正确后移 。当找到插入位置后,需要把插入位置及之后的元素整体向后 “挪一位”,才能腾出空间放新元素,否则新元素会覆盖原有元素,导致顺序混乱
收获: 插入一个元素,元素是要后移的
浙公网安备 33010602011771号