.使用C语言实现有一个数组: (1)请先将其进行排序; (2)输入一个数,要求按原来排序的规律将它插入到数组中(要求数组长度不变) 如原始数组:9,5,6,4,1; 排序后:1,4,5,6,9; 当n=3时,数组变为:1,3,4,5,6,9。
时间: 2024-12-28 10:37:17 浏览: 4
在C语言中,我们可以使用经典的排序算法,如冒泡排序、选择排序、插入排序或快速排序等对数组进行初始排序。这里我们以插入排序为例,因为它的实现简单直观,并且适合于小规模数据。
```c
#include <stdio.h>
// 插入排序函数
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
// 将比key大的元素向右移动
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
// 主函数,用于测试插入排序和插入操作
int main() {
int arr[] = {9, 5, 6, 4, 1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
insertionSort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
int nToInsert = 3; // 输入的数字
printf("After inserting %d: ", nToInsert);
// 插入操作
for (int i = n - 1; i >= 0; i--) {
if (arr[i] > nToInsert) {
arr[i + 1] = arr[i];
break;
} else {
arr[i + 1] = arr[i];
}
}
arr[0] = nToInsert;
for (int i = 0; i <= n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
运行上述程序后,你会得到排序后的数组以及插入指定数值后的结果。
阅读全文