编写函数,将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序,实现过程用指针处理。这里怎么改啊

img


编写函数,将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序,实现过程用指针处理。

img

img

void insert(int *arr, int n, int x) {
    int *p = arr + n - 1;
    while (p >= arr && *p > x) {
        *(p + 1) = *p;
        p--;
    }
    *(p + 1) = x;
}

arr是已排序的整数数组,n是数组中元素的个数,x是要插入的整数

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
int insert(int *a, int n, int x)
{
    int *p;
    if (n == 10)  return n; //当插入数据到数组大小上限,不再插入操作
    for (p = a + n - 1; p >= a; p--){
         if (*p > x)
             *(p + 1) = *p;
         else
             break;
    }
    *(p + 1) = x;
    n++;
    return n;
}
int main()
{
    int a[10] = {1,3,5,7,9}, *p = a, n = 5, x, i;
    scanf("%d", &x);
    n = insert(p, n, x);
    for (i = 0; i < n; i++)
        printf("%d ", p[i]);
    printf("\n");
    return 0;
}