【5-3】编写代码,一维数组长度为10,利用排序算法生成由小到大的顺序,输出有序数组,再由键盘输出一个整数,插入已排好的数组中,要求仍然有序(由小到大),输出新生成的有序数组。编程并上机运行。 (本题参考理论教材冒泡排序+实践教程数组实验) c语言
时间: 2023-12-24 21:05:05 浏览: 56
下面是代码实现:
```c
#include <stdio.h>
int main() {
int arr[10] = {9, 2, 5, 1, 6, 3, 8, 7, 4, 0};
int len = sizeof(arr) / sizeof(arr[0]);
int temp;
// 冒泡排序
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出有序数组
printf("有序数组为:\n");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 插入新元素并保持有序
int num;
printf("请输入要插入的整数:");
scanf("%d", &num);
for (int i = 0; i < len; i++) {
if (num < arr[i]) {
for (int j = len - 1; j >= i; j--) {
arr[j + 1] = arr[j];
}
arr[i] = num;
break;
}
if (i == len - 1) {
arr[i + 1] = num;
break;
}
}
// 输出新生成的有序数组
printf("新生成的有序数组为:\n");
for (int i = 0; i < len + 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
有序数组为:
0 1 2 3 4 5 6 7 8 9
请输入要插入的整数:4
新生成的有序数组为:
0 1 2 3 4 4 5 6 7 8 9
```
阅读全文