用c语言已有一个已排好序的数组,现输入一个数,要求按原来排序的规律将它插入数组中。
时间: 2023-11-29 14:12:37 浏览: 37
好的,这是一个经典的插入排序问题。下面是一个简单的C语言实现:
```c
#include <stdio.h>
void insert(int arr[], int n, int x) {
int i, j;
for (i = 0; i < n; i++) {
if (arr[i] > x) {
// 找到插入位置,将后面的元素往后移动一位
for (j = n - 1; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = x;
break;
}
}
if (i == n) {
// 如果x是最大的元素,则插入到数组末尾
arr[n] = x;
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 4;
insert(arr, n, x);
for (int i = 0; i < n + 1; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个程序中,我们定义了一个`insert`函数,它接受一个已排序的数组`arr`,数组的长度`n`和一个待插入的数`x`。该函数会在数组中找到插入位置并将`x`插入到数组中。如果`x`是最大的元素,则将其插入到数组末尾。
在`main`函数中,我们定义了一个含有5个元素的已排序数组`arr`,并将一个数4插入到该数组中。最后,我们遍历数组并打印出每个元素。