如何使用C语言编写算法,在已排序的整数数组a(包含10个元素)中,将数值为30的新元素x插入并保持数组有序?
时间: 2024-12-20 21:28:35 浏览: 12
在C语言中,要在已排序的整数数组`a`中插入元素`x`(假设为30),可以使用以下步骤编写简单的插入排序算法:
```c
#include <stdio.h>
void insert(int a[], int size, int x) {
int i; // 声明用于遍历的索引
for (i = size - 1; i >= 0 && a[i] > x; i--) { // 从数组尾部开始,向下查找插入位置
a[i + 1] = a[i]; // 将较大元素移到右边
}
a[i + 1] = x; // 将目标元素x放入正确的插入位置
}
int main() {
int a[10] = {1, 5, 8, 12, 16, 20, 25, 30, 35, 40}; // 已排序数组
int x = 30;
int size = sizeof(a) / sizeof(a[0]);
printf("Before insertion: ");
for (int i = 0; i < size; i++) {
printf("%d ", a[i]);
}
insert(a, size, x);
printf("\nAfter insertion: ");
for (int i = 0; i <= size; i++) {
printf("%d ", a[i]); // 注意最后一个元素可能已经被覆盖,此处加1防止数组越界
}
return 0;
}
```
运行这段代码后,数组`a`会在适当的位置插入数字30,同时保证整个数组仍有序。
阅读全文