C语言——在有序数组中插入一个新的元素,且数组的排列不变

在插入新元素时,数组需要多一个空间,所以在 malloc 时分配 len + 1 的空间。

#include <stdio.h>

#include <stdlib.h>

void insert_arry(int *arr, int len,int target)

{

int index;

for (int i = 0; i < len; i++)

{

if (target >= arr[i] && target <= arr[i + 1])

{

index = i + 1;

break;

}

}

for (int j = len - 1; j >= index; j--)

{

arr[j + 1] = arr[j];

}

arr[index] = target;

for (int i = 0; i < len+1; i++)

{

printf("%d ", arr[i]);

}

}

int main()

{

int len;

int target;

scanf_s("%d", &len);

int *arr = (int*)malloc(sizeof(int) * (len+1));

scanf_s("%d", &target);

if (arr == NULL)

{

return 1;

}

else

{

for (int i = 0; i < len; i++)

{

scanf_s("%d", &arr[i]);

}

}

insert_arry(arr, len, target);

free(arr);

return 0;

}

结果

原数组的大小为9,待插入的元素为50

相关推荐
星毅要努力22 分钟前
【C语言编程】【小游戏】【俄罗斯方块】
c语言·开发语言·学习·游戏
埋头编程~24 分钟前
【初阶数据结构】详解树和二叉树(一) - 预备知识(我真的很想进步)
c语言·数据结构·c++·学习
小陈的进阶之路24 分钟前
c++刷题
开发语言·c++·算法
毅凉35 分钟前
C/C++笔记
c语言·c++
model20051 小时前
sahi目标检测java实现
java·算法·目标检测
源代码•宸1 小时前
Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))
c++·算法·leetcode·职场和发展·dp
机械心1 小时前
最优化理论与自动驾驶(一):概述
人工智能·算法·自动驾驶
给自己做减法1 小时前
排序算法快速记忆
java·算法·排序算法
新知图书2 小时前
Rust的常量
算法·机器学习·rust
DdddJMs__1352 小时前
C语言 | Leetcode题解之第403题青蛙过河
c语言·数据结构·算法