使用C语言 把一个整数按大小顺序插入已排好序的数组中(已排序的数组中元素为:6 9 10 12 15)。
时间: 2024-12-11 10:33:31 浏览: 14
有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
在C语言中,你可以通过二分查找法将一个整数按大小顺序插入到一个已排序的数组中。首先,我们需要找到这个数应该插入的位置,使得插入后的数组仍然有序。以下是步骤:
1. 定义一个函数`insert_sorted(arr[], int n, int num)`,其中`arr[]`是已排序的整数数组,`n`是数组长度,`num`是要插入的整数。
```c
void insert_sorted(int arr[], int n, int num) {
if (n == 0 || num < arr[0]) { // 如果数组为空或者num小于第一个元素,插入开始位置
arr[0] = num;
return;
}
if (num > arr[n - 1]) { // 如果num大于最后一个元素,插入结束位置
arr[n] = num;
return;
}
// 找到插入位置
int i = 0, j = n;
while (i < j) {
int mid = (i + j) / 2; // 中间索引
if (num <= arr[mid])
j = mid; // 如果num小于等于中间元素,则在左半部分查找
else
i = mid + 1; // 否则,在右半部分查找
}
// 将num移动到找到的位置
memmove(&arr[i+1], &arr[i], sizeof(arr[i]) * (j - i)); // 使用内存移动函数避免数组越界
arr[i] = num;
}
```
在这个例子中,假设给定的数组是`{6, 9, 10, 12, 15}`,你要插入的整数是8,那么调用`insert_sorted(arr, 5, 8)`后,数组就会变成`{6, 8, 9, 10, 12, 15}`。
阅读全文