题解 | #有序序列插入一个整数#

有序序列插入一个整数

https://www.nowcoder.com/practice/444e87f938464906a1649cff236b102b

从前往后找插入的位置,当插入的数是小于等于当前数组位置的数,那么这个点就是插入点

插入之前需要把插入位置及之后的数都要往后移一格,并且只能从后面开始移动,从前移动会覆盖后面的数

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n = 0;
scanf("%d", &n);
//申请n+1个空间大小的数组
int* a = (int*)malloc(sizeof(int) * (n + 1));

for(int i = 0; i < n; i++)
{
    scanf("%d", &a[i]);
}

//插入的数
int m;
scanf("%d", &m);
int i = 0;
//找出要在那个位置插入
for(i = 0; i < n + 1; i++)
{
    if(m <= a[i])
        break;
}

//把这个位置之后的数据往后移一格,n是数组最后一个元素的下标
int j =0;
for(j = n; j > i; j--)
{
    a[j] = a[j - 1];
}
//插入m到数组,跳出循环是j == i
a[j] = m;

//打印数组
for(i = 0; i < n + 1; i++)
{
    printf("%d ", a[i]);
}

return 0;

}

全部评论

相关推荐

高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务