c语言有一个已经排序好的数组,要求再输入一个数按照原数组的排序方式将它插入数组中
时间: 2023-06-11 18:09:13 浏览: 106
假设已经有一个升序排列的数组 `arr`,需要将一个新的数 `num` 插入到其中,使得数组仍然保持升序排列。可以按照以下步骤进行操作:
1. 找到 `num` 应该插入的位置,即找到第一个大于等于 `num` 的元素的下标 `index`。
2. 将 `num` 插入到下标为 `index` 的位置,同时将 `index` 后的所有元素依次后移一个位置。
3. 更新数组的长度,使其加 1。
具体的实现代码如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int arr[MAX_SIZE]; // 声明数组
int n, num, index;
// 输入原数组
printf("输入数组长度:");
scanf("%d", &n);
printf("输入 %d 个升序排列的整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 输入待插入的数
printf("输入待插入的整数:");
scanf("%d", &num);
// 查找插入位置
index = n;
for (int i = 0; i < n; i++) {
if (arr[i] >= num) {
index = i;
break;
}
}
// 插入新元素
for (int i = n; i > index; i--) {
arr[i] = arr[i-1];
}
arr[index] = num;
n++; // 更新数组长度
// 输出新数组
printf("新的升序排列的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
需要注意的是,以上代码并没有对数组越界进行判断,实际应用中应该加上相应的判断。
阅读全文