在C语言中,如果你有一个已经排好序的数组,并且想要插入一个新的数到数组中,同时保持数组的有序性,你需要首先确定新数的插入位置,然后将该位置及其后面的所有元素向后移动一位,最后将新数插入到正确的位置。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义数组的最大大小 // 函数用于插入新数到已排序的数组中
void insertSorted(int arr[], int *size, int num) { // 如果数组已满,不能插入 if (*size == MAX_SIZE) { printf("Array is full, cannot insert.\n"); return; } int i; // 找到新数应该插入的位置 for (i = *size - 1; i >= 0 && arr[i] > num; i--) { arr[i + 1] = arr[i]; // 将大于新数的元素向后移动一位 } arr[i + 1] = num; // 插入新数 (*size)++; // 数组大小增加1
} int main() { int arr[MAX_SIZE] = {1, 3, 5, 7, 9}; // 示例已排序数组 int size = 5; // 数组当前的大小 int num; // 要插入的数 // 获取用户要插入的数 printf("Enter a number to insert: "); scanf("%d", &num); // 调用函数插入数到数组中 insertSorted(arr, &size, num); // 打印插入后的数组 printf("Array after insertion: "); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); return 0;
}